Эгер биз Linux иштөө тутумунда RAM чегарасына жетсек, үнү өчүрүлгөндө эмне болот?
sobes.tech AI
AIден жооп
Linux иштөө системасы RAM чегерүүлөрүнө жеткенде (OOM - Out Of Memory) OOM Killer иштетет. Бул ядро процесси, ал бир нече процессти тандоого жана токтотууга милдеттүү, алардын көп өлчөмдө эс тутумун колдонуп жатканын аныктап, ресурстарды бошотуп, системанын кармалышына жол бербөө үчүн. Тандоо эвристикага негизделген, ал эс тутум керектөөнү, процесстин приоритетин (oom_score), анын жашоо убактысын жана башка факторлорду эске алат. Дыбышты өчүрүү бул механизмге таасир этпейт.
Чек жана OOM Killer ишинин натыйжалары ар кандай болушу мүмкүн:
- Критикалык маанидеги процессти токтотуу: Эгер OOM Killer системанын иштөөсү үчүн критикалык маанидеги процессти тандаса (мисалы, командалык сап же графикалык чөйрөнү башкарган процесс), бул системанын туруксуздугуна же кармалышына алып келиши мүмкүн, кайра жүктөө керек болот.
- Колдонуучу процесси токтотулат: Эгер колдонуучу процесси токтотулса (мисалы, веб-браузер, тексттик редактор), колдонуучу сакталбаган маалыматтарды жоготот.
- Убактылуу ресурстарды бошотуу: Эгер бир нече процесстин ийгиликтүү токтотулушу менен, системага убакыттык эс тутум жеңилдетилет, ал нормалдуу ишин уланта алат, анткени кайрадан эс тутум жетишпей калат.
- Жүйөлүк логдорго жазуу: OOM Killer иштетилген жана токтотулган процесстер тууралуу маалымат системалык логдорго жазылат (мисалы, dmesg же journalctl), бул администраторго эс тутум жетишпестигинин себебин анализдөөгө мүмкүндүк берет.
Логдорду текшерүү үчүн, мисалы, төмөнкүлөрдү колдонсо болот:
# Ядро акыркы билдирүүлөрүн көрүү, анын ичинде OOM Killer маалыматын
dmesg | grep -i 'out of memory'
# OOM менен байланышкан journald жазууларынын көрүү
journalctl -xe | grep -i 'out of memory'
OOM Killer иштөө режимин өзгөртүү үчүн /proc/sys/vm/oom_kill_allocating_task жана /proc/<pid>/oom_score_adj файлдарын колдонсо болот:
# OOM Killerди өчүрүү (көп учурларда сунушталбайт)
echo 0 > /proc/sys/vm/oom_kill_allocating_task
# PID 1234 үчүн oom_score_adj коэффициентин орнотуу
# Жогорку мааниси процесстин токтотулушу мүмкүнчүлүгүн көбөйтөт
echo 1000 > /proc/1234/oom_score_adj
# Төмөнкү мааниси процесстин токтотулушу мүмкүнчүлүгүн азайтат
echo -1000 > /proc/1234/oom_score_adj