Linux 'top' komutundan çıktı nasıl yorumlanır?


27

BURAYA ne kadar PHP-FPMhafıza tüketildiği hakkında yapılan bir tartışmanın ardından , hafızayı topkomut satırında okurken bir sorun buldum . İşte topyeniden başlattıktan hemen sonra ekranım PHP-FPM. Her şey normal: PHP-FPMher biri 5.5 MB bellek tüketen yaklaşık 20 işlem (toplamın% 0.3'ü).

görüntü tanımını buraya girin

İşte yaşlı sunucu yeniden başlatılmadan hemen önce PHP-FPM(önceki yeniden başlatmadan bir gün sonra). Burada hala PHP-FPMçift ​​bellek kullanımına sahip yaklaşık 25'imiz var (10 MB, toplamın% 0,5'ini gösterir). Bu nedenle, kullanılan toplam bellek 600-700 MB olmalıdır. Öyleyse neden 1,6GB bellek kullanıldı?

görüntü tanımını buraya girin



@ephemient hayır burada durum böyle değil. Bütün bunları kontrol ettim. Bu PHP-FPM ile bağlantılı bir şeydir ve hafıza sadece PHP-FPM yeniden başlatılarak serbest bırakılacaktır. Neyse, Mem ve buffer / cache in freedeğerleri aynıdır.
Googlebot,

6
Virtuozzo "VM" kullaniyor gibisin. Tüm bahisler, hafıza muhasebesi bu şeylere gittiği sürece kapalıdır.
womble


Sevgili womble ve efemient: Her iki cevabınızı da çaldım! cackles
Wesley

Yanıtlar:


34

TL; DR1

Sunucunuz bir çeşit virtuozzo / openvz / virtualization-du-jour konteynerinde. Hafıza kullanımını anlamaya çalışmak yel değirmenlerinde eğiliyor.

TL; DR2

Linux RAM'ini yedi! Ama sorun değil, bunu herkese yapıyor.


Uzun Hikaye

Yıkalım hadi!

Bu Mem:bölümde biz var:

  • $n total: makinenizdeki fiziksel RAM miktarı
  • $n used: Linux tarafından ne kadar bellek tüketildiği, yalnızca işlemlerin toplamı değil.
  • $n free: Linux tarafından ne kadar RAM tüketilmiyor. Bu, önbelleğe alınmış ve tamponlanmış belleğin özünde "serbest" olduğunu dikkate almaz.
  • $n buffers: tampon alanı, okunan veya bekleyen bir disk G / Ç bloklarının saklandığı yerdir. Tampon, tek bir disk bloğunun RAM gösterimidir.

Bu Swap:bölümde biz var:

  • $n total: Kendi kendini açıklayıcı. Sayfaları değiştirmek için kullanılabilir disk alanı miktarı.
  • $n used: Kendi kendini açıklayıcı. Ne kadar disk takas alanı kullanılıyor.
  • $n free: Herp Derp.
  • $n cache: Yukarıdaki tamponlarla yakından ilgilidir. Aslında sayfa önbelleğinin bir parçası ve fiziksel diskte boş bir alanı yok. Bu konuşmanın detayları için endişelenme.

Koşarken ilginç olan kısım geliyor free -m. Üç satır göreceksiniz ve tüm sayılar üste denk gelecek. Örnek olarak kendi bilgisayarımı vereceğim:

             total       used       free     shared    buffers     cached
Mem:          8070       7747        323          0        253       5713
-/+ buffers/cache:       1780       6290
Swap:         5055          0       5055

Mem satırı toplam RAM'i megabayt ( $n totalüstte), ne kadarının ( $n usedüstte), ne kadarının ücretsiz ( $n freeüstte), ne kadarının paylaşıldığını (bunu yoksay) gösterir ve şimdi iyi kısım gelir! buffersVe cachedsütunlar free -mbağıntısı için, tahmin edilebileceği gibi, $n buffersve $n cache. Ancak free -mbununla başlayan ikinci satıra bir göz atın -/+ buffers/cache:. Matematik, kullanılan miktarın gerçekten (toplam) - ((kullanılmış-tamponlar) - önbelleğe alınmış) olduğunu gösterir. Ücretsiz (toplam) - (Yeni Kullanılan).

Bütün bunlar ne anlama geliyor? Linux'un RAM'ini yediği anlamına geliyor ! Kısa hikaye, Linux çekirdeğinin RAM önbelleğe alma için kullanılabildiği için RAM'ı yutmasıdır. Özel bir çekirdeği derlemeye çalışmak istemiyorsanız, bu konuda yapabileceğiniz hiçbir şey yok. Pro İpucu: Yapma.

RAM gerçekten orada ve süreçlerin hevesinde kullanmak için ücretsiz. -/+ buffers/cache:Satır ile kastedilen budur free -m. Bununla birlikte, işleri biraz sincap yapan, hiper görünmez sanallaştırma kabı içerisindesiniz. Bu noktada hafızanızın stoklarını bayt hassasiyetiyle alamazsınız. Ancak, çok sıradışı olan herhangi bir davranış görmüyorsunuz.

Sakin kalın ve devam edin. Ayrıca, fiziksel bir sunucu edinin (Kreskin'e benzeyen bellek istatistiklerini beğenmezseniz SysAdmin'inizdir).


Kullanılan miktar ((kullanılan-tamponlar) önbelleğe alınmış değil mi?
mac,

1

Bellek kullanımını kontrol etmenin en iyi yolu üst değildir. Ancak, sorum bu sorunun bir kopyası olarak işaretlendiğinden, kararımı burada yayınlayacağım.

Ps_mem.py'nin sizin için bellek kullanımını kontrol edeceği bir forumda okudum .

Havuz: https://github.com/pixelb/ps_mem/

İndir:

pip install ps_mem

Kullanımı:

ps_mem

Çıktı:

# ps_mem
 Private  +   Shared  =  RAM used   Program

  4.0 KiB +  15.5 KiB =  19.5 KiB   udevd
  4.0 KiB +  16.0 KiB =  20.0 KiB   mysqld_safe
  4.0 KiB +  25.5 KiB =  29.5 KiB   dbus-daemon
  4.0 KiB +  27.5 KiB =  31.5 KiB   xinetd
 60.0 KiB +  14.5 KiB =  74.5 KiB   epmd
108.0 KiB +  23.0 KiB = 131.0 KiB   init
  8.0 KiB + 135.0 KiB = 143.0 KiB   saslauthd (2)
180.0 KiB +  34.0 KiB = 214.0 KiB   check_scripts.s
796.0 KiB +  41.0 KiB = 837.0 KiB   bash
528.0 KiB + 359.0 KiB = 887.0 KiB   crond (7)
  1.2 MiB + 218.0 KiB =   1.4 MiB   sshd (2)
  1.6 MiB +  45.0 KiB =   1.6 MiB   rsyslogd
  2.0 MiB + 133.0 KiB =   2.1 MiB   beam.smp
  1.3 MiB +   2.3 MiB =   3.6 MiB   httpd (8)
 12.8 MiB + 956.0 KiB =  13.8 MiB   sendmail.sendmail (7)
 53.5 MiB + 114.0 KiB =  53.7 MiB   mysqld
317.6 MiB +   2.3 MiB = 320.0 MiB   python (6)
---------------------------------
                        398.5 MiB
=================================
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.