Anladığım kadarıyla, sistemin boş belleği olmaya yakın olduğunda, çekirdeğin bir miktar belleği geri kazanmak için işlemleri öldürmeye başlaması gerekir. Ama benim sistemimde bu hiç olmaz.
Sistemde mevcut olandan çok daha fazla bellek ayıran basit bir komut dosyası varsayalım (örneğin, milyonlarca dizeli bir dizi). Böyle bir betiği çalıştırırsam (normal bir kullanıcı olarak), sistem tamamen donuncaya kadar tüm belleği alır (sadece SysRQ REISUB çalışır).
Buradaki garip kısım, bilgisayar donduğunda, sabit sürücü ledinin yanması ve takma bölümünün takılı olması durumunda bilgisayar yeniden başlatılıncaya kadar devam etmesidir!
Yani benim sorularım:
- Bu davranış normal mi? Normal bir kullanıcı olarak yürütülen bir uygulamanın sistemi bu şekilde çökertmesi garip ...
- Çok fazla (veya en fazla) bellek elde ettiklerinde Ubuntu'nun bu uygulamaları otomatik olarak öldürmesini sağlayabilmemin bir yolu var mı?
Ek bilgi
- Ubuntu 12.04.3
- Çekirdek 3.5.0-44
RAM: ~ 4GB'tan 3,7GB (grafik kartı ile paylaşılan). *
$ tail -n+1 /proc/sys/vm/overcommit_* ==> /proc/sys/vm/overcommit_memory <== 0 ==> /proc/sys/vm/overcommit_ratio <== 50 $ cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 4194300 344696 -1
Allocation failed
). Ancak takas olmadan sadece bilgisayarı dondurur. Bu şekilde çalışması gerekiyordu (sadece takas kullanırken öldür)?
tail -n+1 /proc/sys/vm/overcommit_*
Çıktıyı deneyin ve ekleyin. Ayrıca bakınız: oom-katili nasıl yapılandırabilirim