Yorumlarda, memory.swappinesssıfır olarak ayarlanmış (değiştirmeyi en aza indirmek için) bir grup oluşturmanızı ve uygulamanızı bunun içinde çalıştırmanızı önerdim . Bunu yaparsanız , fiziksel bellekte inanılmaz derecede düşük olmadıkça , uygulamanız muhtemelen o gruptaki programlar için sayfaları değiştirmenin yeterli fiziksel belleği kullanılabilir hale getirmenin tek yolu olduğunu değiştirmezdi.
Bunu RHEL 6.5 üzerinde yapmak için:
libcgroupPaketin kurulu olduğundan emin olun . Bu, cgcreateve gibi kullanıcı alanı araçlarına erişmenizi sağlar cgexec.
cgconfigGrup yapılandırmasında yapılan değişikliklerin yeniden başlatmalar arasında kalıcı olması için hizmeti başlatın ve etkinleştirin . RHEL'de bu hizmet, gerekli dosya sistemlerini /cgroupağacın altına da monte etmelidir .
İle grubu oluştur cgcreate -g memory:thunderbird
İle bu grupta swappiness'i sıfıra ayarlayın cgset -r memory.swappiness=0 thunderbird
Hizmet cgsnapshot -s > /etc/cgconfig.confiçin güncelleştirilmiş kalıcı bir yapılandırmayı kaydetmek için kullanın cgconfig(şimdiye kadar yapılan tüm değişiklikler çalışma zamanı değişiklikleri olmuştur. Muhtemelen varsayılan yapılandırma dosyasını bir yere kaydetmek ve kalıcı yapılandırma yapmadan önce bir kez vermek istersiniz.
Artık grup cgexeciçinde istenen uygulamaları başlatmak için thunderbirdkullanabilirsiniz:
[root @ xxx601 ~] # cgexec -g bellek: thunderbird ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog düğüm.pp uyku sleep.c ssl-build yığın testi
[kök @ xxx601 ~] #
Ben sahip olmayan thunderbirdaslında aksi bunu yapardı yüklü. Yukarıdakilerin biçimlendirmesinin neden dağınık olduğundan emin değilim.
Bunun alternatiflerinden biri, cgexecthunderbird'ü başlatmak ve PID'yi tasksuygulamanın dosyaya eklemek olacaktır . Örneğin:
[root @ xxx601 ~] # kedi / cgroup / bellek / yıldırım / görevler
[kök @ xxx601 ~] # httpd pidof
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10152 10109
[root @ xxx601 ~] # echo 25926> / cgroup / bellek / yıldırım / görevler
[root @ xxx601 ~] # kedi / cgroup / bellek / yıldırım / görevler
25926
Yine, bunun teknik olarak takas yapılmasını engellemediğini ancak uygulamanın kendisini değiştirmekten kısa olduğunu belirtmek gerekir, muhtemelen en iyi bahistir. Ben sadece şimdi hiçbir takas memory.memsw.limit_in_bytesolmaya zorlamak üzerinde daha doğrudan bir kontrol gibi görünüyor buldum ama gerçekten sorununuzu tamamen giderdi söyleyerek rahat hissetmek için yeterince oynamadım. Bununla birlikte, bundan sonra bakmak bir şey olabilir dedi.
Asıl cevap, mlockbu tür bir endişeyi aşmak için uygulamaya duyarlı bilgilere sahip olmak olacaktır . Thunderbird gibi bir uygulamaya bahse girmeye istekliyim, ama bunu yapıyor ama iç kısımlar hakkında yorum yapacak kadar bilgim yok.
cgexecthunderbird'e gireceksiniz . Hala root erişimine ihtiyacınız var, ancak bu yönetici düzeyinde çözünürlük. Kendi uygulamanızı geliştiriyorsanız mlock kullanırsınız .