Yorumlarda, memory.swappiness
sı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:
libcgroup
Paketin kurulu olduğundan emin olun . Bu, cgcreate
ve gibi kullanıcı alanı araçlarına erişmenizi sağlar cgexec
.
cgconfig
Grup 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 /cgroup
ağ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.conf
iç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 cgexec
içinde istenen uygulamaları başlatmak için thunderbird
kullanabilirsiniz:
[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 thunderbird
aslında aksi bunu yapardı yüklü. Yukarıdakilerin biçimlendirmesinin neden dağınık olduğundan emin değilim.
Bunun alternatiflerinden biri, cgexec
thunderbird'ü başlatmak ve PID'yi tasks
uygulamanı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_bytes
olmaya 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, mlock
bu 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.
cgexec
thunderbird'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 .