Sobes.tech
Middle+

Səs söndürüldükdə Linux əməliyyat sistemində RAM limiti çatdıqda nə baş verəcək?

sobes.tech Süni İntellekt

AI-dan cavab

Linux əməliyyat sistemi, RAM limiti (OOM - Out Of Memory) çatdıqda, OOM Killer-i işə salır. Bu, nüvə prosesi olub, çox miqdarda yaddaş istifadə edən bir və ya bir neçə prosesi seçib sonlandırır; bu, resursları boşaldır və sistemin donmasının qarşısını alır. Seçim prosesi yaddaş istifadəsi, prosesin prioriteti (oom_score), mövcudluğu və digər amillər nəzərə alınmaqla həyata keçirilir. Səsin söndürülməsi bu mexanizmi təsir etmir.

Limiti aşma və OOM Killer-in işləməsinin nəticələri müxtəlif ola bilər:

  • Kritik prosesin sonlandırılması: Əgər OOM Killer sistem üçün kritik olan prosesi (məsələn, shell və ya qrafik mühitini idarə edən prosesi) seçərsə, bu, sistemin stabilliyinin pozulmasına və ya donmasına səbəb ola bilər və yenidən başlatma tələb oluna bilər.
  • İstifadəçi prosesinin sonlandırılması: Əgər istifadəçi prosesi (məsələn, veb brauzer, mətn redaktoru) sonlandırılsa, istifadəçi yadda saxlanmamış məlumatlarını itirəcək.
  • Müvəqqəti resursların boşaldılması: Uğurlu şəkildə bir və ya bir neçə prosesin sonlandırılması halında, sistem müvəqqəti yaddaş azad edəcək və normal işləməyə davam edə biləcək, ta ki, yenidən yaddaş çatışmazlığı baş verənə qədər.
  • Sistem loglarına qeyd: OOM Killer-in aktivləşdirilməsi və sonlandırılan proseslər haqqında məlumatlar sistem loglarına (məsələn, dmesg və ya journalctl) qeyd olunacaq və administratora yaddaş çatışmazlığının səbəbini analiz etməyə imkan verəcək.

Logları yoxlamaq üçün, məsələn, aşağıdakı əmrlər istifadə oluna bilər:

# Kernel-in son mesajlarını, OOM Killer haqqında məlumatlar daxil olmaqla, göstərmək
dmesg | grep -i 'out of memory'

# OOM ilə əlaqəli journald qeydlərini göstərmək
journalctl -xe | grep -i 'out of memory'

OOM Killer-in davranışını /proc/sys/vm/oom_kill_allocating_task/proc/<pid>/oom_score_adj vasitəsilə dəyişdirmək mümkündür.

# OOM Killer-i deaktiv etmək (əksər hallarda tövsiyə edilmir)
echo 0 > /proc/sys/vm/oom_kill_allocating_task

# PID 1234 olan proses üçün oom_score_adj dəyərini təyin etmək
# Daha yüksək dəyər prosesin sonlandırılma ehtimalını artırır
echo 1000 > /proc/1234/oom_score_adj

# Daha aşağı dəyər prosesin sonlandırılma ehtimalını azaldır
echo -1000 > /proc/1234/oom_score_adj