في معظم أعمال التطوير عام 2026، تمثل 32 غيغابايت من DDR5 الحد الأدنى العملي، وتصبح 64 غيغابايت الخيار المريح بمجرد أن تدخل الحاويات أو عنقود Kubernetes محلي أو آلة افتراضية في العمل اليومي، أما 96 إلى 128 غيغابايت أو أكثر فهي لتشغيل عدة آلات افتراضية أو مجموعات بيانات كبيرة أو نماذج LLM محلية مع تفريغ بعض طبقاتها إلى المعالج المركزي. اشترِ هذه السعة في وحدتين متطابقتين بدلًا من أربع، وشغّلها بالسرعة الرسمية للمعالج أو بملف تعريف اختبرته فعلًا. قارن بين الأطقم بزمن الاستجابة مقيسًا بالنانوثانية لا برقم CAS وحده، ولا تختر ECC الحقيقية إلا على منصة تدعمها وتبلغ عن أخطائها من البداية إلى النهاية.
حدّد السعة حسب عبء العمل
ينشأ الضغط على الذاكرة من البرامج التي تعمل في الوقت نفسه، لذا اجمع القمم المتزامنة لا المتوسطات.
المحررات والمتصفحات وخوادم اللغة
نادرًا ما تكون بيئة التطوير المتكاملة نفسها هي المشكلة. تذهب الذاكرة إلى خوادم اللغة والمفهرسات الخاصة بكل مشروع مفتوح، وإلى متصفح مليء بالتوثيق والتطبيقات التي تطورها. ولهذا العبء وحده تترك 32 غيغابايت مساحة لعمليات البناء ولذاكرة التخزين المؤقت للملفات التي تسرّع عمليات البناء المتكررة.
الحاويات وKubernetes داخل Docker
في macOS وWindows تعمل الحاويات داخل آلة Linux افتراضية ذات سقف ثابت. يحدد Docker Desktop على macOS افتراضيًا حد الذاكرة بنسبة 50% من ذاكرة المضيف، وفي Windows ترث الواجهة الخلفية WSL 2 إعداد memory الخاص بـ WSL، وقيمته الافتراضية أيضًا 50% من ذاكرة Windows (إعدادات WSL). على حاسوب محمول بذاكرة 32 غيغابايت يترك ذلك نحو 16 غيغابايت لكل الحاويات وعقد kind وعمليات البناء. ويضاعف وكلاء البرمجة المتوازيون هذا العبء، لأن كل worktree قد يشغّل خادم تطوير وقاعدة بيانات اختبار وعملية بناء خاصة به، كما يشرح دليل البرمجة بالوكلاء.
قواعد البيانات والآلات الافتراضية
يقترح توثيق PostgreSQL البدء بنسبة 25% من الذاكرة لـ shared_buffers على خادم مخصص، لكن محطة العمل ليست خادمًا مخصصًا. حدّد حجم مخازن قاعدة البيانات وفق مجموعة البيانات التي تستعلم عنها فعلًا. أما الآلات الافتراضية فأبسط: ما لم يستخدم المشرف الافتراضي تقنية ballooning أو الذاكرة الديناميكية، يحتفظ النظام الضيف العامل بمعظم الذاكرة المخصصة له. الحد الأدنى الذي تحدده Microsoft لنظام Windows 11 هو 4 غيغابايت، ويحتاج نظام ضيف يعمل بداخله IDE إلى أكثر من ذلك بكثير. وتشغيل نظامين أو ثلاثة أنظمة ضيفة معًا سبب شائع لتجاوز حدود 64 غيغابايت.
نماذج LLM المحلية مع التفريغ إلى المعالج
تشغل الأوزان تقريبًا parameters × bits per weight / 8 بايت، لذا يحتاج نموذج بحجم 70B مكمّم بنحو 4.5 بت لكل وزن إلى قرابة 39 غيغابايت قبل حساب ذاكرة KV المؤقتة وحمل بيئة التشغيل. الطبقات التي لا تتسع لها وحدة GPU تبقى في ذاكرة النظام وتُقرأ مع كل رمز يُولَّد. السعة تحدد هل يُحمَّل النموذج أصلًا، وعرض النطاق يحد من سرعة التوليد. ويتناول دليل العتاد لنماذج LLM المحلية اختيار GPU والتكميم.
قِس ذروتك الخاصة قبل الشراء
الرقم المهم هو ذروة أثقل يوم عمل عادي لديك. على Linux، سجّل الذاكرة المتاحة والضغط عليها كل 30 ثانية أثناء عملك:
#!/usr/bin/env bash
# Log memory headroom and pressure every 30 seconds (stop with Ctrl+C)
while true; do
{
printf '%s ' "$(date -Is)"
awk '/^(MemTotal|MemAvailable|SwapTotal|SwapFree):/ {printf "%s %d ", $1, $2/1024}' /proc/meminfo
awk '/^some/ {print "psi_some_" $2}' /proc/pressure/memory
} >> "$HOME/mem-headroom.log"
sleep 30
done
ثم احسب الذروة بطرح أدنى قيمة لـ MemAvailable من إجمالي الذاكرة. ولأن MemAvailable تحتسب ذاكرة التخزين المؤقت القابلة للاسترداد ذاكرةً حرة، فإن النتيجة تمثل ما احتاجته التطبيقات فعلًا:
awk '{t=$3; a=$5; if (min == "" || a < min) min = a}
END {printf "peak used: %d MiB of %d MiB\n", t - min, t}' "$HOME/mem-headroom.log"
الضغط لا يقل أهمية عن الذروة. تمثل some avg10 المتوسط على 10 ثوانٍ لنسبة الوقت الذي انتظرت فيه مهمة واحدة على الأقل الذاكرة. القيم غير الصفرية المستمرة، أو مساحة swap المتنامية، أو تدخلات OOM killer في journalctl -k تعني أن الجهاز يعاني نقصًا في الذاكرة بالفعل. تخفف مساحة swap على قرص سريع من المشكلة لكنها لا تحل محل الذاكرة، ويغطي دليل شراء أقراص NVMe SSD جانب التخزين.
ولأمر واحد ثقيل، مثل عملية بناء كاملة، شغّله في مجموعة cgroup خاصة به واقرأ memory.peak، وهو أقصى استخدام سُجّل للمجموعة والعمليات المتفرعة عنها، بما في ذلك ذاكرة الصفحات المؤقتة:
cat > peak-mem.sh <<'EOF'
#!/usr/bin/env bash
# Run a command and report the peak memory of its cgroup
"$@"
status=$?
cg="/sys/fs/cgroup$(cut -d: -f3 /proc/self/cgroup)"
echo "memory.peak: $(( $(cat "$cg/memory.peak") / 1048576 )) MiB" >&2
exit "$status"
EOF
chmod +x peak-mem.sh
systemd-run --user --scope --quiet ./peak-mem.sh make -j"$(nproc)"
استخدم docker stats --no-stream للحاويات وعقد kind، وراقب رسم ضغط الذاكرة في Activity Monitor على macOS، والذاكرة الملتزم بها في Task Manager على Windows. أضف هامشًا، ثم قرّب إلى أعلى نحو سعة تستطيع وحدتان توفيرها.
القنوات ولماذا تتفوق وحدتان عادةً على أربع
تملك منصات سطح المكتب الشائعة، مثل AMD Ryzen 9000 على AM5 وIntel Core Ultra 200S، قناتين من DDR5. وتتكون كل وحدة DDR5 من قناتين فرعيتين مستقلتين تمامًا، عرض كل منهما 32 بت من البيانات، لذا ينقل الحاسوب ثنائي القناة 128 بت من البيانات في كل عملية نقل. ومن هنا يُحسب عرض النطاق النظري الأقصى:
bandwidth (GB/s) = channels × 8 bytes × data rate (MT/s) / 1000
2 × 8 × 5600 / 1000 = 89.6 GB/s dual-channel DDR5-5600
2 × 8 × 6400 / 1000 = 102.4 GB/s dual-channel DDR5-6400
أربع وحدات على القناتين نفسيهما تضيف سعة لا عرض نطاق.
وحدة واحدة لكل قناة أم وحدتان
تعمل اللوحة ذات الفتحات الأربع عند امتلائها بوحدتين لكل قناة، وكل وحدة إضافية تزيد الحمل على خطوط الإشارة نفسها. تذكر مواصفات AMD للمعالج Ryzen 9 9950X سرعة DDR5-5600 لوحدتين وDDR5-3600 لأربع وحدات، سواء كانت أحادية الرتبة أو ثنائية الرتبة (مواصفات AMD Ryzen 9 9950X). وتوضح نشرة Intel أن السرعات القصوى تخص تكوين وحدة واحدة لكل قناة وأن الحمل الإضافي قد يخفضها (نشرة Intel Core Ultra desktop Series 2).
اختر السعة الإجمالية أولًا ثم اشترها في وحدتين: 2 × 32 غيغابايت لـ 64 غيغابايت، و2 × 48 غيغابايت لـ 96 غيغابايت، و2 × 64 غيغابايت لـ 128 غيغابايت. لا تستخدم الفتحات الأربع إلا إذا لم تكفِ وحدتان، وتقبّل حينها سرعة أدنى وتدريبًا أطول للذاكرة. وشراء طقم ثانٍ لاحقًا طريق معروف إلى عدم الاستقرار، لأن الطقمين لم يُختبرا معًا قط.
السرعة وزمن CAS وزمن الاستجابة الحقيقي
في التسمية DDR5-6000 CL30 يُعبَّر عن معدل البيانات بالميغا عملية نقل في الثانية، بينما يُحسب زمن CAS بدورات الساعة. تنقل DDR البيانات مرتين في كل دورة، لذا فإن زمن استجابة الكلمة الأولى بالنانوثانية هو:
true latency (ns) = CL × 2000 / data rate (MT/s)
DDR5-4800 CL40: 40 × 2000 / 4800 = 16.7 ns
DDR5-5600 CL46: 46 × 2000 / 5600 = 16.4 ns
DDR5-6000 CL30: 30 × 2000 / 6000 = 10.0 ns
DDR5-6400 CL32: 32 × 2000 / 6400 = 10.0 ns
ارتفاع CL في طقم أسرع لا يجعله أسوأ تلقائيًا. وCAS ليس إلا أحد التوقيتات، لذا استخدم المعادلة للمقارنة بين الأطقم لا للتنبؤ بما ستراه البرمجيات.
في التطوير يكون ترتيب الأولويات: السعة، ثم الاستقرار، ثم عرض النطاق، ثم زمن الاستجابة، لأن الجهاز الذي يلجأ إلى swap يخسر أكثر مما يستطيع أي توقيت تعويضه. والاستثناء هو الاستدلال على المعالج المركزي: فبالنسبة للطبقات المفرّغة لا يمكن أن يتجاوز عدد الرموز في الثانية عرض النطاق مقسومًا على بايتات الأوزان المقروءة لكل رمز. ومع 30 غيغابايت من الأوزان الكثيفة في الذاكرة و89.6 غيغابايت في الثانية، يكون السقف نحو 3 رموز في الثانية. أما نماذج mixture-of-experts فتقرأ الخبراء النشطين فقط، ما يخفض هذه الكلفة دون أن يخفض السعة المطلوبة.
XMP وEXPO: السرعة المعلنة كسرٌ للسرعة
يخزّن الطقم التجاري توقيتات JEDEC القياسية التي تستخدمها اللوحة افتراضيًا، إضافة إلى ملفات تعريف الشركة المصنّعة. يدعم Intel XMP 3.0 حتى خمسة ملفات تعريف، ثلاثة من المصنّع واثنان قابلان لإعادة الكتابة، بينما يوفر AMD EXPO ملفات تعريف مضبوطة لمعالجات Ryzen على AM5. وتصف الشركتان ذلك بأنه كسر للسرعة. تذكر Intel أن استخدام XMP خارج المواصفات قد يُبطل ضمان المعالج (Intel XMP)، وتذكر AMD أن تشغيل الذاكرة خارج المواصفات التي نشرتها يُبطل ضمان منتجات AMD (AMD EXPO).
اختبر مصنّع الطقم ملف التعريف على لوحات معينة، ووحدة التحكم في الذاكرة داخل معالجك نسخة مستقلة. ولجهاز العمل اتبع هذا الترتيب:
- حدّث البرنامج الثابت للوحة أولًا، لأن شيفرة تدريب الذاكرة تتغير بين الإصدارات.
- فعّل ملف التعريف واترك الإقلاع الأول يكتمل. قد يستغرق تدريب DDR5 بعد تغيير الذاكرة وقتًا أطول بكثير من الإقلاع المعتاد.
- أجرِ اختبارات الاستقرار الموصوفة أدناه قبل أن تأتمن الجهاز على عمل حقيقي.
- عند ظهور أخطاء، اخفض السرعة درجة أو عد إلى قيم JEDEC الافتراضية بدلًا من رفع الجهد عشوائيًا.
والعمل بالسرعة الرسمية للمعالج خيار مشروع لجهاز يجب أن يكون صحيحًا قبل أن يكون سريعًا.
CUDIMM ومشغّل الساعة
وحدة CUDIMM هي وحدة غير مخزنة مؤقتًا مزودة بمشغّل ساعة (CKD) على الوحدة نفسها. يعرّف معيار JEDEC DDR5CKD01 المكوّن الذي يعيد توليد إشارة الساعة لوحدات CUDIMM وCSODIMM وCAMM (مشغّل الساعة JEDEC DDR5)، ما يحسّن جودة الإشارة عند السرعات العالية.
ودعم المنصة هو ما يحدد الفائدة. تذكر نشرة Intel لمعالجات Core Ultra 200S سرعة DDR5-6400 لوحدة CUDIMM واحدة لكل قناة، ويرفع إعلان Intel في مارس 2026 عن Core Ultra 200S Plus هذه القيمة إلى DDR5-7200 ويضيف دعمًا مبكرًا لوحدات CUDIMM رباعية الرتب بسعة تصل إلى 128 غيغابايت على بعض اللوحات بشرائح Intel من الفئة 800. وعلى المنصات الأخرى راجع أولًا مواصفات المعالج وقائمة الذاكرة المعتمدة للوحة. وحدة CUDIMM ليست وحدة مسجلة (registered) ولا تملك ECC جانبية (side-band) ما لم يُذكر ذلك صراحة.
ECC المدمجة في الشريحة لا تجعل الذاكرة ذاكرة ECC
تحتوي كل شريحة DDR5 على ECC مدمجة (on-die)، وتذكرها JEDEC ضمن الميزات التي تتيح التصنيع بعمليات متقدمة (معيار JEDEC DDR5). وهي تصحح الأخطاء داخل مصفوفة DRAM فقط، ولا تحمي الوحدة ولا الموصل ولا الناقل، ولا تُبلَّغ تصحيحاتها إلى نظام التشغيل. وعبارة on-die ECC على وحدة UDIMM عادية تصف DDR5 نفسها لا وحدة ECC.
أما ECC الجانبية فتضيف شرائح DRAM تخزن بتات التحقق لكل قناة فرعية. تتحقق وحدة التحكم في الذاكرة من كل وصول، وتصحح ما تسمح به الشيفرة، وتكتشف الأخطاء الأشد، وتبلغ نظام التشغيل بالنوعين. وهذا الإبلاغ هو الفائدة الحقيقية: عدّاد أخطاء مصححة يتزايد على وحدة واحدة إنذار مبكر، بينما يتعطل الجهاز الخالي من ECC أو يفسد البيانات بين حين وآخر.
UDIMM وRDIMM وحزّ التثبيت
وحدات ECC UDIMM غير مخزنة مؤقتًا وتناسب لوحات المستهلكين ومحطات العمل المبتدئة إذا كانت منصتها تدعم ECC. أما RDIMM فتضيف مشغّل ساعة مسجِّلًا وتخص الخوادم ومحطات العمل الراقية. وتختلف مواضع حزّ التثبيت بين UDIMM وRDIMM في DDR5، لذا فهي غير قابلة للتبادل ولا يجوز خلطها.
المنصات التي تدعم ECC الحقيقية
لا تعمل ECC إلا عندما يدعمها المعالج والشرائح الداعمة والبرنامج الثابت والوحدات جميعًا. وحتى سبتمبر 2026 يبدو الوضع كالتالي:
- AMD Ryzen 9000 على AM5: تذكر AMD دعم ECC بعبارة «Yes (Requires mobo support)» لطرازات مثل 9950X. تحقق من دعم ECC UDIMM في دليل اللوحة ومن طراز المعالج بدقة، لأن عائلات AMD المكتبية تختلف.
- AMD EPYC 4005 على AM5: معالجات خوادم للمقبس نفسه مع دعم DDR5 ECC حتى 192 غيغابايت.
- AMD Ryzen Threadripper PRO 9000 WX-Series: حتى ثماني قنوات من DDR5 RDIMM مع تفعيل ECC افتراضيًا.
- Intel Core Ultra 200S: تتطلب ECC دعم المعالج والشريحة معًا (مقال Intel عن دعم ECC). وتذكر Intel دعم ECC على W880 وعدم دعمها على Z890.
- معالجات Intel Xeon 600 لمحطات العمل على W890: ذاكرة DDR5 مسجلة مع ECC.
بعد الإقلاع الأول بوحدات ECC تحقق من أن ECC مفعّلة فعلًا بدل افتراض ذلك.
الحواسيب المحمولة: LPDDR5X الملحومة وCAMM2
تستخدم معظم الحواسيب المحمولة النحيفة ذاكرة LPDDR5X ملحومة على اللوحة أو مثبتة على حزمة المعالج. وهي سريعة وموفرة للطاقة، لكن سعتها تُحدد عند الشراء، وبعض المنصات تضع لها سقفًا منخفضًا: إذ تذكر Intel أن الحد الأقصى للمعالج Core Ultra 7 258V هو 32 غيغابايت. لذا اشترِ من البداية السعة التي كنت ستوسّع إليها لاحقًا.
وفي الطرف الآخر توجد التصاميم العريضة. يستخدم AMD Ryzen AI Max+ PRO 395 واجهة LPDDR5X-8000 بعرض 256 بت مع ما يصل إلى 128 غيغابايت، ما يعطي 32 بايت × 8000 MT/s = 256 غيغابايت في الثانية من عرض النطاق النظري، أي مرتين ونصف ما يقدمه حاسوب مكتبي ثنائي القناة بذاكرة DDR5-6400. ولهذا تُعد هذه الأجهزة مثيرة للاهتمام للنماذج المحلية، لكن لا شيء فيها قابل للترقية.
وتمثل CAMM2 البديل القابل للاستبدال. يعرّف معيار JEDEC JESD318، المنشور في ديسمبر 2023، وحدات Compression Attached Memory Module بنسختي DDR5 وLPDDR5/5X مع تصميم موصل مشترك. ويتوقف التوافر على طراز الحاسوب المحمول، لذا ابحث عن CAMM2 أو LPCAMM2 في مواصفات الشركة المصنّعة. وتبقى الحواسيب المحمولة ذات فتحات SO-DIMM أبسط طريق للترقية.
اختبار الاستقرار باستخدام memtest86+ وقراءة الأخطاء في Linux
اختبر كل طقم جديد وكل تغيير في ملف التعريف وكل تحديث للبرنامج الثابت يغيّر تدريب الذاكرة. Memtest86+ أداة مستقلة مجانية مفتوحة المصدر لاختبار الذاكرة. صدر الإصدار الحالي v8.10 في مايو 2026، ويقلع ملف تنفيذي واحد على UEFI وعلى BIOS التقليدي (memtest86+). الملف التنفيذي غير موقّع من Microsoft، لذا عطّل Secure Boot أثناء الاختبار ثم أعد تفعيله بعده. تمريرة كاملة واحدة تختبر الذاكرة كلها، والتشغيل الأطول يزيد الثقة. وإذا فشل نظام مكسور السرعة، فأعد الاختبار بالإعدادات الافتراضية ثم اختبر الوحدات واحدة تلو الأخرى. وهي مشروع منفصل عن PassMark MemTest86.
نفّذ تمريرة واحدة بقيم JEDEC الافتراضية عندما يكون الجهاز جديدًا، وعدة تمريرات بعد تفعيل ملف التعريف، ثم اختبار حمل داخل نظام التشغيل:
sudo apt install stressapptest
# Test 75% of RAM for one hour with CPU-intensive copy threads
stressapptest -s 3600 -M "$(awk '/MemTotal/ {printf "%d", $2*0.75/1024}' /proc/meminfo)" -W
مع ECC يبلّغ Linux عن الأخطاء المصححة وغير المصححة عبر عدادات EDAC في sysfs (توثيق EDAC في النواة):
ls /sys/devices/system/edac/mc/
sudo dmesg | grep -i -E 'edac|ecc'
grep -H . /sys/devices/system/edac/mc/mc*/ce_count /sys/devices/system/edac/mc/mc*/ue_count
sudo apt install rasdaemon
sudo ras-mc-ctl --status
sudo ras-mc-ctl --error-count
يعني خلو المجلد /sys/devices/system/edac/mc/ عدم وجود مشغّل EDAC لوحدة التحكم هذه أو أن ECC معطلة، أيًا كان ما يُكتب على ملصق الوحدة، كما أن dmidecode -t memory لا يعرض إلا ما يدّعيه البرنامج الثابت. اعتبر أي خطأ غير مصحح حادثة عتادية، واعتبر عدّاد الأخطاء المصححة المتزايد على وحدة واحدة سببًا لاستبدالها. وتنقل الإصدارات الأحدث من rasdaemon هذه الخيارات إلى أوامر فرعية، لذا راجع ras-mc-ctl --help.
التكوينات المقترحة حسب الاستخدام
هذه نقاط انطلاق، وذروتك المقيسة مقدَّمة عليها.
| الاستخدام | السعة | التكوين | ملاحظات |
|---|---|---|---|
| IDE ومتصفح وبضع حاويات | 32 غيغابايت | 2 × 16 غيغابايت | الترقية تعني استبدال الوحدتين |
| حاويات وKubernetes داخل Docker ووكلاء متوازيون | 64 غيغابايت | 2 × 32 غيغابايت | ارفع حدود Docker Desktop أو WSL |
| عدة آلات افتراضية وقواعد بيانات كبيرة وبناء مستودع موحد | 96 إلى 128 غيغابايت | 2 × 48 أو 2 × 64 غيغابايت | ابقَ على وحدة واحدة لكل قناة |
| نماذج LLM محلية مع التفريغ إلى المعالج | 128 غيغابايت أو أكثر | 2 × 64 غيغابايت أو منصة أعرض | عرض النطاق يحد سرعة الطبقات المفرّغة |
| تلف البيانات الصامت مكلف | 64 غيغابايت أو أكثر مع ECC | ECC UDIMM على AM5 أو W880، وRDIMM على Threadripper PRO أو Xeon | تحقق من عدادات EDAC |
| حاسوب محمول | 32 غيغابايت، و64 للآلات الافتراضية | LPDDR5X أو SO-DIMM أو LPCAMM2 | إن كانت الذاكرة ملحومة فاشترِ السعة النهائية فورًا |
تجاوز 128 غيغابايت على حاسوب مكتبي ثنائي القناة يعني أربع وحدات بسرعة رسمية أدنى، وهو ما تتجنبه منصات Threadripper أو Xeon.
قائمة تحقق عملية قبل الطلب
- سجّل استخدام الذاكرة والضغط طوال أسبوع نموذجي وأضف هامشًا.
- اشترِ السعة كلها في طقم واحد من وحدتين متطابقتين.
- راجع جدول ذاكرة المعالج وقائمة الذاكرة المعتمدة للوحة لمعرفة النوع الدقيق: UDIMM أو CUDIMM أو ECC UDIMM أو RDIMM.
- قارن الأطقم بزمن الاستجابة الحقيقي بالنانوثانية وبالسرعة.
- حدّث البرنامج الثابت، ولا تفعّل XMP أو EXPO إلا إذا كنت ستختبره، واترك التدريب يكتمل.
- شغّل memtest86+ بالإعدادات الافتراضية ثم مع ملف التعريف، وبعدهما اختبار حمل داخل النظام.
- بالنسبة إلى ECC، تأكد أولًا من دعم المنصة، ثم تحقق من عدادات EDAC في Linux.
- في الحاسوب المحمول ذي الذاكرة الملحومة، اشترِ السعة التي ستحتاجها حتى نهاية عمره.
- أعد فحص ضغط الذاكرة بعد بضعة أشهر، خاصة بعد إضافة آلات افتراضية أو عناقيد أو نماذج محلية.