یک خطای کوچک در حافظه ممکن است نتیجه محاسبه، محتوای یک رکورد یا وضعیت ماشین مجازی را تغییر دهد. رم ECC برای تشخیص و اصلاح بخشی از همین خطاها ساخته شده است؛ قابلیتی که اهمیت آن در سرورهای همیشهروشن و سرویسهای حساس بیشتر میشود. اما نصب ماژول ECC بهتنهایی کافی نیست. پردازنده، مادربرد و تنظیمات سیستم هم باید از آن پشتیبانی کنند.
- ECC در حالت رایج، خطای تکبیتی را اصلاح و خطای دوبیتی را شناسایی میکند.
- ثبت خطاهای حافظه به مدیر سرور کمک میکند مشکلات تکرارشونده را زودتر پیگیری کند.
- برای اطمینان از وضعیت حافظه باید مشخصات سختافزار، تنظیمات و گزارشهای سیستم را کنار هم بررسی کرد.
ECC مخفف Error-Correcting Code است. در یک سازماندهی متداول DDR4، کنار هر ۶۴ بیت داده، ۸ بیت برای کد تصحیح خطا در نظر گرفته میشود. این بیتهای اضافه ظرفیت قابلاستفاده سیستمعامل را بیشتر نمیکنند؛ وظیفه آنها بررسی صحت داده هنگام خواندن است. به همین دلیل در اطلاعات بعضی ماژولها، عرض کل ۷۲ بیت و عرض داده ۶۴ بیت دیده میشود.
حفظ یکپارچگی اطلاعات، کاهش خطاهای خاموش، امکان گزارشگیری و کمک به تشخیص ماژول مشکلدار، مهمترین مزیتهای این روش هستند. برای استفاده درست از آن، ابتدا باید بدانیم چه خطاهایی قابلاصلاحاند و سپس ببینیم وضعیت ECC در لینوکس و ویندوز چگونه بررسی میشود.
رم ECC چگونه خطای حافظه را اصلاح میکند؟
سلولهای DRAM داده را به شکل بار الکتریکی نگه میدارند و برای حفظ آن به تازهسازی دورهای نیاز دارند. گاهی یک بیت بر اثر اختلال گذرا یا ایراد سختافزاری از صفر به یک، یا برعکس، تغییر میکند. اگر هیچ سازوکاری برای کنترل صحت وجود نداشته باشد، برنامه ممکن است همین مقدار اشتباه را دریافت کند.
کنترلر حافظه هنگام نوشتن، کد بررسی را از روی داده محاسبه و همراه آن ذخیره میکند. هنگام خواندن، محاسبه دوباره انجام میشود. تفاوت نتیجه جدید با کد ذخیرهشده، اطلاعاتی به نام سندروم خطا ایجاد میکند که در محدوده توان کد، برای تشخیص محل خطا به کار میرود.
- داده و بیتهای بررسی در حافظه نوشته میشوند.
- در درخواست خواندن، داده و کد همراه آن دریافت میشوند.
- کنترلر صحت داده را بررسی میکند.
- خطای قابلاصلاح اصلاح میشود و خطای خارج از توان اصلاح، به سازوکار گزارش خطای سیستم سپرده میشود.
این روند تا حدی شبیه رقم کنترلی یک شناسه است، با این تفاوت که بعضی کدهای ECC علاوه بر تشخیص مغایرت، امکان اصلاح آن را هم فراهم میکنند. چنین قابلیتی به معنی شناسایی قطعی همه الگوهای خرابی نیست.
تفاوت خطای نرم و خطای سخت
خطای نرم یا Soft Error معمولاً یک تغییر گذرا در داده است و الزاماً به معنی خرابی دائمی سلول حافظه نیست. عواملی مانند اثر ذرات پرانرژی یا اختلالات الکتریکی میتوانند در بروز آن نقش داشته باشند. در مقابل، خطای سخت یا Hard Error با یک ایراد پایدار سختافزاری ارتباط دارد و ممکن است دوباره در همان محدوده ظاهر شود.
هاست اختصاصی وردپرس
شروع از ماهانه 80 هزار تومان
افزایش خطاهای اصلاحشده را نباید صرفاً به این دلیل که سرویس هنوز کار میکند نادیده گرفت. با این حال، تکرار خطا نیز بهتنهایی ثابت نمیکند که تنها راهحل تعویض DIMM است. اتصال ماژول، سوکت پردازنده، کنترلر حافظه، دما و فرمور هم باید در بررسی فنی دیده شوند. گزارش BMC و الگوی خطاها به محدود کردن علت کمک میکنند.
SECDED و محدوده توان اصلاح
SECDED یعنی Single Error Correction, Double Error Detection؛ اصلاح خطای تکبیتی و تشخیص خطای دوبیتی. در پیادهسازی رایج مبتنی بر کد همینگ توسعهیافته، مجموعهای از بیتهای بررسی روی بخشهای همپوشان داده محاسبه میشود تا محل یک بیت اشتباه مشخص شود.
اگر دو بیت در همان کلمه کد تغییر کنند، این سازوکار معمولاً آن را تشخیص میدهد، اما نمیتواند مانند خطای تکبیتی اصلاحش کند. برای خطاهای بزرگتر، نتیجه به الگوی خطا و نوع کد وابسته است؛ حتی احتمال تفسیر اشتباه یک خطای چندبیتی هم وجود دارد. بنابراین عبارت «رم ECC همه خطاها را رفع میکند» دقیق نیست.
بعضی سرورها حالتهای پیشرفتهتری مانند Lockstep، Advanced ECC یا قابلیتهای مشابه Chipkill دارند. این روشها میتوانند با چینش مشخص حافظه، در برابر بعضی خرابیهای بزرگتر نیز حفاظت ایجاد کنند. پشتیبانی و هزینه آنها از نظر ظرفیت، پهنای باند یا تعداد ماژول لازم، به مدل سرور و تنظیمات وابسته است. وجود عبارت ECC روی رم، فعال بودن این حالتها را تضمین نمیکند.
اگر خطا قابلاصلاح نباشد چه اتفاقی میافتد؟
برخورد سیستم با خطای غیرقابلاصلاح به محل داده آسیبدیده و قابلیت سختافزار و سیستمعامل بستگی دارد. ممکن است یک فرایند متوقف شود، یک صفحه حافظه از استفاده خارج شود یا سیستم برای جلوگیری از ادامه کار با داده نامعتبر، دچار توقف بحرانی و راهاندازی مجدد شود.
در حافظه بدون ECC نیز نتیجه همیشه فساد پنهان داده نیست؛ برنامه یا سیستم ممکن است از کار بیفتد. تفاوت مهم این است که سازوکار حافظه برای تشخیص و گزارش این گروه از خطاها محدودتر است. ECC احتمال بعضی آسیبها را کاهش میدهد، اما جای معماری قابلبازیابی سرویس را نمیگیرد.
مقایسه حافظه ECC و حافظه بدون ECC
| ویژگی | ECC | بدون ECC |
|---|---|---|
| عرض رایج در DDR4 | ۶۴ بیت داده بههمراه ۸ بیت بررسی | ۶۴ بیت داده |
| اصلاح خطای تکبیتی | در حالت متداول SECDED | ندارد |
| تشخیص خطای دوبیتی | در همان محدوده کد SECDED | حفاظت معادل ندارد |
| گزارش خطا | وابسته به کنترلر، فرمور و درایور | فاقد گزارش ECC حافظه |
| سازگاری | نیازمند پشتیبانی کل زنجیره حافظه | نیازمند تطابق با مشخصات سیستم |
| اثر بر عملکرد | وابسته به پلتفرم و حالت حفاظت | بدون سربار کد ECC |
| ساختار ماژول | دارای منابع اضافی برای بیتهای بررسی | بدون این بخش حفاظتی |
| کاربرد رایج | سرور و ایستگاه کاری حساس | رایانه شخصی و کاربرد عمومی |
چرا ECC در سرورها اهمیت بیشتری دارد؟
سرور ممکن است مدت زیادی زیر بار بماند و داده چندین کاربر یا سرویس را همزمان پردازش کند. خطایی که در یک رایانه شخصی به بسته شدن یک برنامه محدود میشود، در یک پایگاه داده یا میزبان مجازیسازی میتواند دامنه اثر بزرگتری داشته باشد. البته حساسیت داده مهمتر از نام دستگاه است؛ یک ایستگاه کاری پژوهشی هم میتواند به ECC نیاز جدی داشته باشد.
سرور مجازی ارزان
شروع از ماهانه 100 هزارتومان
- یکپارچگی داده: کاهش احتمال استفاده برنامه از بعضی مقادیر تغییرکرده در حافظه.
- پایداری سرویس: اصلاح خطاهای قابلاصلاح بدون نیاز به توقف برنامه در بسیاری از موارد.
- هشدار زودهنگام: امکان مشاهده روند خطا پیش از تبدیل شدن مشکل به اختلال جدیتر.
- عیبیابی دقیقتر: شناسایی کانال یا ماژول درگیر، در صورت پشتیبانی صحیح سختافزار و گزارشها.
ابزارهای گزارش خطای سیستمعامل، اطلاعات سختافزار را در اختیار مدیر قرار میدهند؛ اما کیفیت و جزئیات این اطلاعات در همه سرورها یکسان نیست. بعضی خطاها از مسیر کنترلر حافظه و بعضی از طریق سازوکارهای دیگر گزارش میشوند. نبود یک پیام در یک ابزار، بهتنهایی به معنی نبود مشکل نیست.
چه کاربردهایی بیشتر از ECC سود میبرند؟
- پایگاه دادههایی که داده در حافظه را پردازش و سپس روی دیسک ذخیره میکنند.
- سرویسهای درونحافظهای مانند Redis که بخش مهمی از وضعیت آنها در RAM است.
- میزبان ماشینهای مجازی با چندین سرویس همزمان.
- سامانههای مالی یا محاسباتی که صحت نتیجه در آنها اهمیت بالایی دارد.
- سرور فایل و پشتیبانگیری که باید داده سالم را دریافت، بررسی و نگهداری کند.
در انتخاب سرور اختصاصی برای این کاربردها، نوع حافظه و امکان پایش خطا را کنار ظرفیت رم بررسی کنید. ظرفیت بیشتر، جای قابلیت حفاظت از داده را نمیگیرد و وجود ECC هم کمبود ظرفیت را جبران نمیکند.
محدودیتهایی که باید در نظر گرفت
- همه خطاهای چندبیتی در محدوده توان اصلاح ECC رایج نیستند.
- خرابی SSD، خطای نرمافزار و حذف اشتباه داده با ECC رفع نمیشوند.
- پشتیبانی پردازنده، مادربرد و فرمور برای استفاده واقعی از قابلیت ضروری است.
- قیمت و محدودیتهای چینش حافظه ممکن است با سیستم معمولی تفاوت داشته باشد.
ECC با RAID و بکاپ هممعنی نیست. ECC از داده در مسیر حافظه حفاظت مشخصی میکند، در حالی که RAID بسته به سطح انتخابی، برای توزیع داده یا تحمل بعضی خرابیهای دیسک به کار میرود. هیچکدام جای نسخه پشتیبان مستقل را نمیگیرند.
یک مثال فرضی از بررسی خطای حافظه
فرض کنید فروشگاهی روی یک سیستم بدون ECC اجرا میشود و هر چند وقت یکبار با بسته شدن ناگهانی پایگاه داده مواجه است. این نشانه بهتنهایی خرابی RAM را ثابت نمیکند؛ دیسک، تنظیمات نرمافزار، برق و عوامل دیگر هم ممکن است دخیل باشند. آزمون و گزارش لازم است تا علت مشخص شود.
اگر همان بار روی پلتفرمی با ECC و گزارشگیری مناسب اجرا شود، ثبت خطاهای تکرارشونده حافظه میتواند مسیر عیبیابی را روشنتر کند. مزیت اصلی این مثال، دسترسی به شواهد و اصلاح بخشی از خطاهاست؛ نه وعده حذف کامل خرابی یا بینیازی از بررسی فنی.
UDIMM، RDIMM و LRDIMM چه تفاوتی دارند؟
این نامها بیشتر به سازماندهی الکتریکی ماژول مربوطاند. UDIMM فاقد رجیستر میانی برای سیگنالهای فرمان و آدرس است. در RDIMM، رجیستر بار این سیگنالها را برای کنترلر کاهش میدهد. LRDIMM علاوه بر آن، در مسیر داده نیز از بافر استفاده میکند تا نصب ظرفیتهای بالاتر در پلتفرمهای پشتیبان ممکن شود.
Registered و ECC دو ویژگی متفاوتاند. برای مثال، ECC UDIMM وجود دارد و نباید هر ماژول ECC را RDIMM دانست. انتخاب باید بر اساس نوع دقیق ماژول پشتیبانیشده توسط سرور باشد.
سرور مجازی ویندوز
Remote Access & Full Admin
| نوع ماژول | ساختار | نکته انتخاب |
|---|---|---|
| UDIMM | بدون رجیستر میانی | نسخه ECC و غیر ECC دارد؛ پشتیبانی پلتفرم ضروری است |
| RDIMM | رجیستر فرمان و آدرس | رایج در بسیاری از سرورها |
| LRDIMM | رجیستر و بافر داده | برای ظرفیت بیشتر در پلتفرم سازگار |
| ترکیب انواع | قابلجایگزینی دلخواه نیستند | RDIMM و LRDIMM را بدون مجوز صریح مستندات ترکیب نکنید |
برای نمونه، در پیکربندیهای پشتیبانیشده HPE DL360 Gen9 با ۲۴ اسلات و پردازندههای مناسب، مستندات ظرفیتهایی تا ۷۶۸ گیگابایت با RDIMM و تا ۳ ترابایت با LRDIMM را فهرست کردهاند. این اعداد به مدل ماژول و پیکربندی وابستهاند و برای هر سرور Gen9 یا هر پردازندهای قابل تعمیم نیستند. تعداد اسلاتهای قابلاستفاده نیز به نصب پردازنده متناظر وابسته است.
چطور پشتیبانی و وضعیت ECC را بررسی کنیم؟
تفاوت ECC در DDR4 و DDR5
در سازماندهی رایج DDR4 ECC، مسیر ۶۴ بیتی داده با ۸ بیت بررسی همراه است. ماژول DDR5 ECC معمولاً دو زیرکانال ۳۲ بیتی دارد که هرکدام ۸ بیت اضافه برای بررسی دارند. این تغییر سازماندهی بهتنهایی به معنی دو برابر شدن سرعت تمام برنامهها نیست.
DDR5 قابلیت On-Die ECC هم دارد؛ یعنی تراشه میتواند بخشی از خطاهای داخل خودش را اصلاح کند. این ویژگی با ECC سراسری مسیر حافظه یکسان نیست و از تمام مسیر انتقال بین تراشه و کنترلر حفاظت نمیکند. بنابراین داشتن DDR5 معمولی، جایگزین ماژول ECC و پلتفرم پشتیبان آن نیست. DDR4 و DDR5 نیز از نظر نصب، قابلجایگزینی مستقیم نیستند.
پردازنده، مادربرد و فرمور را با هم بررسی کنید
ابتدا مدل دقیق پردازنده و مادربرد یا سرور را پیدا کنید. سپس نوع حافظه، ظرفیت مجاز هر اسلات، تعداد کانالها و حالتهای حفاظت را از راهنمای همان دستگاه بخوانید. پشتیبانی یک خانواده پردازنده به این معنی نیست که هر مادربرد دارای آن پردازنده، ECC را فعال میکند.
در مرحله بعد، وضعیت UEFI یا BIOS و اطلاعات کنترلر مدیریتی را بررسی کنید. تنظیمات حافظه، نسخه فرمور و ترتیب نصب ماژولها ممکن است بر قابلیتهای در دسترس اثر بگذارند. اگر فهرست حافظههای تأییدشده وجود دارد، تطابق شماره قطعه از اتکا به نام تجاری دقیقتر است.
بررسی ECC و شمارنده خطا در لینوکس
برای مشاهده اطلاعاتی که فرمور درباره حافظه گزارش میکند، میتوان از دستور زیر استفاده کرد:
sudo dmidecode -t memory | grep -E "Error Correction Type|Total Width|Data Width"
در خروجی، نوع تصحیح خطا و تفاوت عرض داده با عرض کل را بررسی کنید. برای یک ماژول DDR4 ECC، مشاهده Total Width برابر ۷۲ و Data Width برابر ۶۴ میتواند نشانهای از ساختار ECC باشد. با این حال، این داده از SMBIOS میآید و بهتنهایی آزمون قطعی فعال بودن همه قابلیتهای حفاظت نیست. در ماشین مجازی نیز ممکن است مشخصات حافظه فیزیکی میزبان نمایش داده نشود.
اگر درایور EDAC و مسیر مربوط به کنترلر حافظه در دسترس باشند، شمارندهها را میتوان به این شکل خواند:
grep -H . /sys/devices/system/edac/mc/mc*/ce_count
grep -H . /sys/devices/system/edac/mc/mc*/ue_count
CE به خطای قابلاصلاح و UE به خطای غیرقابلاصلاح اشاره دارد. عدد صفر فقط درباره بازه ثبت آن شمارنده اطلاعات میدهد، نه تمام عمر سرور. نبود مسیر هم لزوماً به معنی نبود ECC نیست؛ درایور، معماری و روش گزارشدهی را بررسی کنید. برای نتیجه قابلاتکا، این اطلاعات را با گزارش کرنل و BMC تطبیق دهید.
بررسی حافظه ECC در ویندوز
در PowerShell میتوانید اطلاعات گزارششده توسط فرمور را با CIM بخوانید:
Get-CimInstance Win32_PhysicalMemoryArray | Select-Object MemoryErrorCorrection
Get-CimInstance Win32_PhysicalMemory | Select-Object BankLabel, DataWidth, TotalWidth
در ویژگی MemoryErrorCorrection، مقدار ۳ به نبود تصحیح، ۵ به ECC تکبیتی و ۶ به ECC چندبیتی اشاره میکند. مقادیر ناشناخته یا گزارش ناقص را نباید بهدلخواه تفسیر کرد. این خروجی نیز وضعیت اعلامشده سختافزار را نشان میدهد و جای تست سازنده یا بررسی تنظیمات را نمیگیرد.
برای پیگیری رخدادهای واقعی، گزارشهای سختافزاری ویندوز و کنترلر مدیریتی سرور را هم ببینید. اگر یک اسلات یا کانال بارها خطا دارد، زمان رخداد، شماره قطعه و شرایط بار را ثبت کنید تا بررسی بعدی بر اساس شواهد انجام شود.
پنج نکته پیش از خرید یا ارتقای حافظه
- نوع ماژول را دقیق انتخاب کنید؛ ECC UDIMM، RDIMM و LRDIMM یکسان نیستند.
- نرخ انتقال پشتیبانیشده را بررسی کنید. واحد MT/s را با فرکانس واقعی بر حسب MHz اشتباه نگیرید.
- ماژولها را با ترتیب اسلات و توازن کانال توصیهشده سازنده نصب کنید.
- شماره قطعه، ظرفیت، Rank و فهرست سازگاری را کنترل کنید.
- ظرفیت را بر اساس مصرف واقعی و رشد سرویس تعیین کنید؛ ظرفیت قابلنصب همیشه برابر نیاز سرویس نیست.
| ویژگی | DDR4 ECC رایج | DDR5 ECC رایج |
|---|---|---|
| سازماندهی داده | مسیر ۶۴ بیتی | دو زیرکانال ۳۲ بیتی |
| بیتهای بررسی | ۸ بیت کنار ۶۴ بیت | ۸ بیت کنار هر ۳۲ بیت |
| On-Die ECC | ویژگی عمومی این نسل نیست | وجود دارد؛ متفاوت از ECC مسیر حافظه |
| ولتاژ نامی متداول | ۱٫۲ ولت | ۱٫۱ ولت |
| نرخ انتقال استاندارد | از جمله پیکربندیهای تا 3200 MT/s | از 4800 MT/s در نسل اولیه و بالاتر |
| مدیریت تغذیه | عمدتاً روی مادربرد | استفاده از PMIC روی ماژول |
پرسشهای متداول درباره ECC
ECC دقیقاً چه معنایی دارد؟
کد تصحیح خطاست؛ روشی که با ذخیره اطلاعات اضافی کنار داده، امکان تشخیص و اصلاح گروه مشخصی از خطاها را فراهم میکند.
آیا ECC سرعت را کم میکند؟
اثر آن به کنترلر، نوع حافظه و حالت حفاظت وابسته است. تعیین یک درصد ثابت برای همه سیستمها درست نیست. حالتهای پیشرفتهای مانند Lockstep ممکن است اثر متفاوتی با ECC معمولی داشته باشند.
میتوان رم ECC را روی مادربرد دسکتاپ نصب کرد؟
فقط در صورت سازگاری نوع ماژول و پشتیبانی پلتفرم. ممکن است سیستم راهاندازی نشود یا در بعضی ترکیبها قابلیت ECC فعال نباشد. پیش از خرید، مستندات همان مدل را بررسی کنید.
Registered همان ECC است؟
خیر. Registered به ساختار بافر سیگنالها مربوط است و ECC به حفاظت از داده. این دو ویژگی را باید جداگانه بررسی کرد.
DDR5 معمولی برای حفاظت کامل کافی است؟
On-Die ECC فقط بخشی از خطاهای داخل تراشه را پوشش میدهد. برای حفاظت مسیر حافظه به پشتیبانی ECC در ماژول، کنترلر و سیستم نیاز است.
آیا همه خطاها اصلاح میشوند؟
خیر. توان اصلاح به نوع کد و پیکربندی بستگی دارد. SECDED رایج برای اصلاح تکبیت و تشخیص دوبیت طراحی شده است.
چطور از فعال بودن ECC مطمئن شویم؟
مشخصات پردازنده و مادربرد، وضعیت UEFI، اطلاعات ماژول و گزارش سیستمعامل و BMC را کنار هم بررسی کنید. یک خروجی منفرد همیشه برای نتیجه قطعی کافی نیست.
بالا رفتن CE چه اقدامی لازم دارد؟
روند خطا و محل آن را ثبت کنید، سلامت بکاپ را بررسی کنید و مطابق راهنمای سازنده در زمان نگهداری مناسب عیبیابی انجام دهید. افزایش مداوم خطا نباید بیاهمیت فرض شود.
میتوان RDIMM و LRDIMM را ترکیب کرد؟
در بسیاری از سرورها از جمله پلتفرمهای رایج HPE، این ترکیب پشتیبانی نمیشود. ملاک نهایی، راهنمای نصب حافظه مدل دقیق سرور است.
انتخاب ECC همراه با پایش درست
ECC بخشی از خطاهای حافظه را اصلاح میکند و برای گروه دیگری امکان تشخیص و واکنش فراهم میسازد. ارزش آن در سرویس حساس، هم به حفاظت هنگام پردازش مربوط است و هم به اطلاعاتی که برای عیبیابی در اختیار مدیر قرار میدهد.
هنگام ارتقا، تفاوت ECC واقعی مسیر حافظه با On-Die ECC را در نظر بگیرید و سازگاری ماژول را پیش از خرید بررسی کنید. پس از نصب نیز گزارشهای لینوکس، ویندوز و کنترلر مدیریتی را بهصورت دورهای دنبال کنید؛ وجود قابلیت بدون پایش خطا، بخشی از فایده عملی آن را بلااستفاده میگذارد.