Данила (Dayfing)
Жарияланымдарға оралу
2 525 сөз12 мин

Әзірлеушіге арналған DDR5 жады: көлем, жиілік, таймингтер және ECC

2026 жылы әзірлеу жұмыстарының көбі үшін 32 ГБ DDR5 іс жүзіндегі ең төменгі деңгей болып табылады. Жұмысқа контейнерлер, жергілікті Kubernetes кластері немесе виртуалды машина қосылғанда 64 ГБ ыңғайлы стандартқа айналады, ал 96–128 ГБ және одан көп көлем бірнеше VM, үлкен деректер жиындары немесе қабаттары CPU-ға жүктелетін жергілікті LLM үшін қажет. Бұл көлемді төрт емес, екі бірдей модульмен сатып алып, жадыны процессордың ресми жиілігінде немесе өзіңіз шынымен тексерген профильде іске қосыңыз. Жинақтарды CAS санымен емес, наносекундпен өлшенген кідіріс бойынша салыстырыңыз, ал нағыз ECC-ді тек оны басынан аяғына дейін қолдайтын әрі қателер туралы хабарлайтын платформада таңдаңыз.

Көлемді жүктеме бойынша есептеңіз

Жадыға қысымды бір уақытта жұмыс істейтін бағдарламалар жасайды, сондықтан орташа мәндерді емес, бір-бірімен қабаттасатын шыңдарды қосыңыз.

Редакторлар, браузерлер және тілдік серверлер

IDE-дің өзі сирек мәселе тудырады. Жадыны әр ашық жобаның тілдік серверлері мен индекстеушілері, сондай-ақ құжаттамасы мен өзіңіз әзірлеп жатқан қолданбалары бар браузер алады. Мұндай жүктеме үшін 32 ГБ құрастыруларға және қайталанатын құрастыруларды жеделдететін файл кэшіне орын қалдырады.

Контейнерлер және Docker ішіндегі Kubernetes

macOS пен Windows жүйелерінде контейнерлер қатаң шегі бар Linux-VM ішінде жұмыс істейді. macOS жүйесіндегі Docker Desktop әдепкі бойынша жадыны хост жадысының 50%-ымен шектейді, ал Windows жүйесінде WSL 2 бэкенді WSL-дің memory параметрін мұра етеді, оның да әдепкі мәні Windows жадысының 50%-ы (WSL баптаулары). 32 ГБ ноутбукта бұл барлық контейнерлерге, kind түйіндеріне және құрастыруларға шамамен 16 ГБ қалдырады. Кодпен жұмыс істейтін параллель агенттер жүктемені еселейді, өйткені әр worktree өз dev-серверін, тест дерекқорын және құрастыруын іске қоса алады, бұл агенттік әзірлеу нұсқаулығында сипатталған.

Дерекқорлар және виртуалды машиналар

PostgreSQL құжаттамасы бөлек серверде shared_buffers үшін RAM-ның 25%-ынан бастауға кеңес береді, бірақ жұмыс станциясы ондай сервер емес. Дерекқор буферлерінің өлшемін өзіңіз шынымен сұрау жасайтын жұмыс жиынына қарай таңдаңыз. Виртуалды машиналармен бәрі қарапайымырақ: гипервизор ballooning немесе динамикалық жадыны қолданбаса, іске қосылған қонақ жүйе өзіне бөлінген RAM-ның басым бөлігін ұстап тұрады. Microsoft талап ететін Windows 11 минимумы 4 ГБ, ал ішінде IDE жұмыс істейтін қонақ жүйеге одан әлдеқайда көп керек. Бір уақытта іске қосылған екі-үш VM көбіне 64 ГБ жетпей қалуының себебі болады.

Қабаттары CPU-ға жүктелетін жергілікті LLM

Салмақтар шамамен parameters × bits per weight / 8 байт алады, сондықтан салмаққа шамамен 4,5 бит келетін кванттаудағы 70B параметрлі модельге KV-кэш пен орындау ортасының қосымша шығынына дейін-ақ 39 ГБ-қа жуық жады керек. GPU-ға сыймайтын қабаттар жүйелік жадыда жатады және әр генерацияланған токен үшін оқылады. Көлем модельдің мүлдем жүктеле ме, жоқ па, соны анықтайды, ал өткізу қабілеті генерация жылдамдығын шектейді. GPU мен кванттауды таңдау жергілікті LLM-ге арналған жабдық нұсқаулығында талданған.

Сатып алмас бұрын өз шыңыңызды өлшеңіз

Ең ауыр қалыпты жұмыс күнінің шыңдық жүктемесі маңызды. 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 немесе journalctl -k ішіндегі OOM killer іске қосылулары жадының әлдеқашан жетпей жатқанын білдіреді. Жылдам жинақтағыштағы swap мәселені жұмсартады, бірақ RAM-ды алмастырмайды, ал жинақтағышты таңдау туралы NVMe SSD сатып алу нұсқаулығы айтады.

Толық құрастыру сияқты бір ауыр команданы бөлек cgroup ішінде іске қосып, memory.peak мәнін оқыңыз. Бұл cgroup пен оның еншілес топтары үшін тіркелген ең жоғары тұтыну, оған page cache да кіреді:

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)"

Контейнерлер мен kind түйіндері үшін docker stats --no-stream пайдаланыңыз, macOS жүйесінде Activity Monitor ішіндегі жады қысымының графигін, ал Windows жүйесінде Task Manager ішіндегі бөлінген жадыны қадағалаңыз. Қор қосып, екі модуль бере алатын көлемге дейін жоғары қарай дөңгелектеңіз.

Арналар және неге екі модуль әдетте төрт модульден жақсы

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 сипаттамасы).

Алдымен жалпы көлемді таңдап, содан кейін оны екі модульмен сатып алыңыз: 64 ГБ үшін 2 × 32 ГБ, 96 ГБ үшін 2 × 48 ГБ, 128 ГБ үшін 2 × 64 ГБ. Төрт слотты тек қажетті көлем екі модульге сыймаған жағдайда ғана пайдаланыңыз және төменірек жиілік пен ұзағырақ жады оқытуына (memory training) дайын болыңыз. Кейін екінші жинақты сатып алу жиі тұрақсыздыққа әкеледі, өйткені бұл жинақтарды ешкім бірге тексермеген.

Жиілік, 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-қа кеткен машина кез келген тайминг қайтара алатыннан көбірек жоғалтады. CPU-дағы инференс бұған ерекшелік: жүктелген қабаттар үшін секундына токен саны өткізу қабілетін бір токенге оқылатын салмақтар көлеміне бөлгеннен аспайды. RAM-да 30 ГБ тығыз салмақ және 89,6 ГБ/с болғанда жоғарғы шек секундына шамамен 3 токен болады. Mixture-of-experts модельдері тек белсенді эксперттерді оқиды, бұл осы шығынды азайтады, бірақ қажетті көлемді азайтпайды.

XMP және EXPO: мәлімделген жиілік үдету болып табылады

Бөлшек саудадағы жинақ тақта әдепкі бойынша қолданатын стандартты JEDEC таймингтерін және өндіруші профильдерін сақтайды. Intel XMP 3.0 бес профильге дейін қолдайды: үшеуі өндірушіден және екеуі қайта жазылатын, ал AMD EXPO AM5-тегі Ryzen үшін бапталған профильдер береді. Екі вендор да мұны үдету (overclocking) деп атайды. Intel XMP-ді спецификациядан тыс пайдалану процессор кепілдігінен айыруы мүмкін екенін ескертеді (Intel XMP), ал AMD жадының AMD жариялаған спецификациялардан тыс жұмысы AMD кепілдігін жоятынын көрсетеді (AMD EXPO).

Жинақ өндірушісі профильді белгілі бір тақталарда тексерген, ал сіздің процессорыңыздағы жады контроллері бөлек дана болып табылады. Жұмыс машинасы үшін рет мынадай:

  1. Алдымен тақтаның микробағдарламасын жаңартыңыз, өйткені жадыны оқыту коды нұсқадан нұсқаға өзгереді.
  2. Профильді қосып, алғашқы жүктелудің аяқталуын күтіңіз. Жады ауыстырылғаннан кейін DDR5 оқытуы әдеттегі іске қосылудан әлдеқайда ұзаққа созылуы мүмкін.
  3. Машинаға нақты жұмысты сеніп тапсырмас бұрын төменде сипатталған тұрақтылық тесттерін орындаңыз.
  4. Қателер болса, кернеулерді болжаммен көтермей, жиілікті бір саты төмендетіңіз немесе JEDEC әдепкі баптауларына оралыңыз.

Жылдамдықтан гөрі дұрыстығы маңыздырақ машина үшін процессордың ресми жиілігінде жұмыс істеу қалыпты таңдау.

CUDIMM және такт сигналының драйвері

CUDIMM модуль тақтасында такт сигналының драйвері (CKD) бар буферсіз модуль болып табылады. JEDEC DDR5CKD01 стандарты CUDIMM, CSODIMM және CAMM модульдері үшін такт сигналын қайта қалыптастыратын драйверді сипаттайды (JEDEC DDR5 такт драйвері), бұл жоғары жиіліктерде сигнал сапасын жақсартады.

Одан пайда бола ма, жоқ па, оны платформаның қолдауы шешеді. Intel компаниясының Core Ultra 200S сипаттамасында бір арнаға бір CUDIMM үшін DDR5-6400 көрсетілген, ал 2026 жылғы наурыздағы Core Ultra 200S Plus хабарландыруы бұл мәнді DDR5-7200-ге дейін көтеріп, Intel 800 сериялы чипсеттері бар кейбір тақталарда көлемі 128 ГБ-қа дейінгі төрт рангілі CUDIMM-ге ерте қолдау қосады. Басқа платформаларда алдымен процессор спецификациясын және тақтаның үйлесімді жады тізімін тексеріңіз. CUDIMM регистрлік модуль емес және сипаттамасында тікелей айтылмаса, сыртқы (side-band) ECC-сі жоқ.

On-die ECC жадыны ECC жадыға айналдырмайды

Әр DDR5 микросхемасында on-die ECC бар, және JEDEC оны заманауи технологиялық процестермен жады шығаруға мүмкіндік беретін функциялардың қатарында атайды (JEDEC DDR5 стандарты). Ол қателерді тек DRAM массивінің ішінде түзетеді. Ол модульді, қосқышты және шинаны қорғамайды, ал оның түзетулері операциялық жүйеге хабарланбайды. Қарапайым UDIMM сипаттамасындағы on-die ECC жазуы ECC модулін емес, DDR5 стандартының өзін сипаттайды.

Side-band ECC әр ішкі арна үшін бақылау биттерін сақтайтын қосымша DRAM микросхемаларын қосады. Жады контроллері әр жүгінуді тексереді, код мүмкіндік беретін қателерді түзетеді, одан ауыр қателерді анықтайды және екеуі туралы да операциялық жүйеге хабарлайды. Басты пайда дәл осы есептілікте: бір модульде өсіп келе жатқан түзетілген қателер есептегіші ерте ескерту болады, ал ECC жоқ машина жай ғана анда-санда құлайды немесе деректерді бүлдіреді.

UDIMM, RDIMM және кілт ойығы

ECC UDIMM буферсіз модульдер және платформа ECC-ді қолдаса, тұтынушылық тақталар мен кіші жұмыс станцияларына сәйкес келеді. RDIMM регистрлік такт драйверін қосады және серверлер мен жоғары деңгейлі жұмыс станцияларына арналған. DDR5 UDIMM мен RDIMM кілт ойықтары әртүрлі, сондықтан олар бір-бірін алмастырмайды және араластырылмайды.

Қай платформалар нағыз ECC-ді қолдайды

ECC оны процессор, чипсет, микробағдарлама және модульдер қолдағанда ғана жұмыс істейді. 2026 жылғы қыркүйектегі жағдай мынадай:

  • AM5-тегі AMD Ryzen 9000: AMD 9950X сияқты модельдер үшін ECC қолдауын «Yes (Requires mobo support)» деп көрсетеді. Тақта нұсқаулығынан ECC UDIMM қолдауын және процессордың нақты моделін тексеріңіз, өйткені AMD үстелдік отбасылары бір-бірінен ерекшеленеді.
  • AM5-тегі AMD EPYC 4005: сол сокетке арналған, 192 ГБ-қа дейін DDR5 ECC қолдайтын серверлік процессорлар.
  • AMD Ryzen Threadripper PRO 9000 WX-Series: әдепкі бойынша ECC қосулы, сегіз арнаға дейінгі DDR5 RDIMM.
  • Intel Core Ultra 200S: ECC процессор тарапынан да, чипсет тарапынан да қолдауды талап етеді (Intel компаниясының ECC қолдауы туралы мақаласы). Intel W880 үшін ECC қолдауын көрсетеді, ал Z890 үшін қолдау жоқ.
  • W890-дағы жұмыс станцияларына арналған Intel Xeon 600 процессорлары: ECC бар регистрлік DDR5.

ECC модульдерімен алғашқы жүктелуден кейін ECC-дің шынымен жұмыс істеп тұрғанын болжамай, тексеріңіз.

Ноутбуктер: дәнекерленген LPDDR5X және CAMM2

Жұқа ноутбуктердің көбі тақтаға дәнекерленген немесе процессор корпусына орналастырылған LPDDR5X пайдаланады. Ол жылдам әрі үнемді, бірақ көлемі сатып алу кезінде бекітіледі, ал кейбір платформалар оны төмен деңгейде шектейді: Intel Core Ultra 7 258V үшін ең көбі 32 ГБ. Кейін кеңейтер едіңіз деген көлемді бірден сатып алыңыз.

Спектрдің екінші шетінде кең интерфейсті шешімдер тұр. AMD Ryzen AI Max+ PRO 395 256 биттік LPDDR5X-8000 интерфейсін және 128 ГБ-қа дейін жадыны пайдаланады, бұл 32 байт × 8000 MT/s = 256 ГБ/с теориялық өткізу қабілетін береді, яғни DDR5-6400 бар екі арналы үстел компьютерінен екі жарым есе көп. Сондықтан мұндай машиналар жергілікті модельдер үшін қызықты, бірақ оларда ештеңені жаңартуға болмайды.

CAMM2 ауыстырылатын балама болып табылады. 2023 жылғы желтоқсанда жарияланған JEDEC JESD318 стандарты ортақ қосқыш конструкциясы бар DDR5 және LPDDR5/5X үшін Compression Attached Memory Module модульдерін сипаттайды. Қолжетімділік нақты ноутбук моделіне байланысты, сондықтан өндіруші спецификациясынан CAMM2 немесе LPCAMM2 іздеңіз. SO-DIMM слоттары бар ноутбуктер кеңейтудің ең қарапайым жолы болып қала береді.

memtest86+ арқылы тұрақтылықты тексеру және Linux-та қателерді оқу

Әр жаңа жинақты, профильдің әр өзгерісін және жадыны оқытуды өзгертетін микробағдарламаның әр жаңартуын тексеріңіз. Memtest86+ ашық бастапқы кодты, тегін, дербес жады тестері. Ағымдағы v8.10 шығарылымы 2026 жылғы мамырда шықты, және бір бинарлық файл UEFI-де де, legacy 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 түзетілген және түзетілмеген қателер туралы sysfs ішіндегі EDAC есептегіштері арқылы хабарлайды (ядроның 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 ГБ Кеңейту үшін екі модульді де ауыстыру керек
Контейнерлер, Docker ішіндегі Kubernetes, параллель агенттер 64 ГБ 2 × 32 ГБ Docker Desktop немесе WSL шектеулерін көтеріңіз
Бірнеше VM, үлкен дерекқорлар, монорепозиторийді құрастыру 96–128 ГБ 2 × 48 ГБ немесе 2 × 64 ГБ Бір арнаға бір модульде қалыңыз
Қабаттары CPU-ға жүктелетін жергілікті LLM 128 ГБ және одан көп 2 × 64 ГБ немесе кеңірек платформа Жүктелген қабаттардың жылдамдығын өткізу қабілеті шектейді
Деректердің байқаусыз бүлінуі қымбатқа түседі 64 ГБ және одан көп, ECC AM5 немесе W880-де ECC UDIMM, Threadripper PRO немесе Xeon-да RDIMM EDAC есептегіштерін тексеріңіз
Ноутбук 32 ГБ, VM үшін 64 ГБ LPDDR5X, SO-DIMM немесе LPCAMM2 Жады дәнекерленген болса, соңғы көлемді бірден алыңыз

Екі арналы үстел компьютерінде 128 ГБ-тан асатын көлем төмендетілген ресми жиіліктегі төрт модульді білдіреді, ал Threadripper немесе Xeon бұдан құтылуға мүмкіндік береді.

Тапсырыс бермес бұрын практикалық тексеру тізімі

  1. Әдеттегі бір апта бойы жады тұтынуы мен қысымды жазып, қор қосыңыз.
  2. Бүкіл көлемді екі бірдей модульден тұратын бір жинақпен сатып алыңыз.
  3. Нақты түрі үшін процессордың жады кестесін және тақтаның үйлесімді жады тізімін тексеріңіз: UDIMM, CUDIMM, ECC UDIMM немесе RDIMM.
  4. Жинақтарды наносекундтағы нақты кідіріс пен жиілік бойынша салыстырыңыз.
  5. Микробағдарламаны жаңартыңыз, XMP немесе EXPO-ны тек тексеретін болсаңыз ғана қосыңыз және оқытудың аяқталуын күтіңіз.
  6. memtest86+ тестін әдепкі баптаулармен және профильмен жүргізіп, содан кейін ОЖ ішінде жүктеме тестін орындаңыз.
  7. ECC үшін алдымен платформа қолдауын растап, содан кейін Linux-та EDAC есептегіштерін тексеріңіз.
  8. Жадысы дәнекерленген ноутбукта қызмет мерзімінің соңына дейін қажет болатын көлемді алыңыз.
  9. Бірнеше айдан кейін, әсіресе VM, кластерлер немесе жергілікті модельдер қосылғаннан кейін, жады қысымын қайта тексеріңіз.

Басқа жарияланымдар