Linux: bellek ücretsizdir ancak takas kullanılır. Neden?


11

İşte Munin'in diyagramları.

Bellek kullanımı: http://koryagin.com/w/q/memory-day.png

Takas / çıkış: http://koryagin.com/w/q/swap-day.png

RAM boyutu programlar tarafından kullanılan bellekten çok daha büyük olduğunda neden Linux önbelleği artırmaya ve takas kullanmaya karar veriyor?


2
Son birkaç yıldaki linux VM alt sistemi, arabellek alanı ve önbellek alanı lehine ayarlanmıştır; belleğini tüketebilir ama uygulamaları yapıyor şey diske karıştırılır alacak. Bu, duyarlılığı ve performansı artırır. Performans sorunları görmüyorsanız, gerçekten endişelenmenize gerek yok.
Bart Silverstrim

Yanıtlar:


17

Sunucunuzda muhtemelen birçok etkin olmayan sayfa bulunan bazı bellek yiyen ve / veya etkin olmayan işlemler vardır. Linux çekirdeği, büyük olasılıkla bellek önbellek olarak daha iyi kullanıldığından, programın etkin olmayan kısımlarını takas etmek için değiştirmeyi tercih eder.

Bu davranışı değiştirmek isterseniz, vm.swappinesssysctl ile ayarlanabilir ancak uyarılırsınız, çekirdek geliştiricilerini / dağıtım sahiplerini zekice geçirmek o kadar kolay değildir. :-)

Bu takas artışı sırasında sunucunuzda performans sorunlarınız mı var ya da merak mı ettiniz?


Bu sunucuda performans sorunlarım yok. Ama durumun o kadar net olmadığı bir başka yerde, ne yapacağımı düşünüyorum. Bilinen PHP sorunlarından hiçbiriyle eşleşmezlerse, bazı Linux bellek yönetimi mantığı PHP-FPM segfaultlarının nedeni olamaz mı? Yani, genellikle meraktan yana.
Pavel Koryagin

BTW, bu sunucu sabit bir komut dosyası kümesiyle çok az miktarda veriyi yoğun bir şekilde işler, bu nedenle yoğun G / Ç'ye sahip olmamalıdır. Peki Linux neden bu kadar büyük bir önbellek istiyor?
Pavel Koryagin

Linux dosyaları, dosya meta verilerini, dizin girişlerini vb. Komutu deneyin slabtop.
Janne Pikkarainen

Çok teşekkürler. slabtopBilgi ile ne yapılacağını anlamak biraz zaman alacaktır .
Pavel Koryagin

Patronunuz odacıklarınızı geçtiğinde tam ekran çalışmasına izin verin ve gözlerinde bir guru yapın. :-) Başka bir güzel "ooh, kesinlikle anlaşılması zor görünüyor" komutu systat -vmstatFreeBSD'de (muhtemelen diğer BSD'ler de).
Janne Pikkarainen

1

Swappiness parametresi ile oynamaya çalışmalısınız . Sisteminizin dosya önbellek boyutunu artırmaya çalıştığında değişmeye başladığını görebileceğiniz gibi, swappines 0 değilse bu normaldir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.