Takasımı (Ubuntu) ne kullanıyor?


30

Bir veritabanı ve bir sürü Java uygulama sunucusu çalıştıran bir Ubuntu 8.04 sunucum var. Hafıza yapılandırması ve kullanımı:

             total       used       free     shared    buffers     cached
Mem:      16456176   15930028     526148          0      81372    9674196
-/+ buffers/cache:    6174460   10281716
Swap:      1951888     366100    1585788

Değişimin her öğleden sonra arttığını ve geceleri serbest bırakıldığını fark ettim. Talep tüm günlerde aynı değildir ve farklı zamanlarda başlar. Bu yüzden bulanık "öğleden sonra gecesi" sınırı dışında, oldukça rastgele.

Bu makineye yük gün içinde değişir. Gece yarısı ve sabah 6-7 arasında çok düşük, 6-8'e kadar çok daha yüksek (ama sabit), sonra yavaş yavaş düşüyor.

Şimdi aşağıdaki sorularım var:

  1. Hangi işlemlerin takas kullandığını nasıl görebilirim?
  2. Önbellekten biraz hafıza almak yerine neden değişmeyi tercih ediyor?

Yanıtlar:


25

Tarif ettiğiniz takas kullanım kalıpları şaşırtıcı görünmüyor. Nadiren kullanılan sayfalara sahip, sürekli çalışan bazı işlemlerle tutarlıdır. Gün boyunca, yüksek etkinlik nedeniyle, nadir kullanılan sayfalar hemen hemen her zaman takastadır. Geceleri RAM'de onlar için daha fazla yer var.

Her bir işlemin içinde topveya içinde ne kadar bellek kullandığına dair bir fikir edinebilirsiniz htop. Hiçbiri takas kullanımını varsayılan olarak göstermez, ancak her ikisi de yapılandırılabilir (üst: basın fve SWAPsütunu açın; htop: basın F2, NSWAPsütunu ekleyin ). İşlem kimliğinin cat /proc/12345/vmstatbulunduğu belirli bir işlem hakkında daha fazla bilgi edinebilirsiniz 12345. Bazı sayfalar birkaç işlem tarafından paylaşıldığından, “bir programın ne kadar değiş tokuş kullandığını” tam olarak tanımlanmadığını unutmayın.

RAM için iki ana rakip türü vardır: işlem belleği (değiştirilebilen) ve disk önbellekleri (bir dosyadan yeniden okunabilir). İşlem belleğini disk önbelleklerine göre her zaman önceliklendirmek için hiçbir neden yoktur: işlem belleğinin nadiren kullanılan kısmını değiştirmek, bir dosyayı tekrar tekrar belleğe okumaya devam etmekten daha iyidir. Disk önbelleklerine ayrılan belleğin yaklaşık yarısı (% 30 -% 70) ile verdiğiniz rakamlar, yapmaları gereken işler için makul miktarda RAM'e sahip sistemler için tipiktir.


6
Bir NSWAPsütun bulamıyorum (Ubuntu 16.04: /).
jjmontes

1
@jjmontes Kaldırıldı . Neden bilmiyorum.
Gilles 'SO- kötülük yapmayı bırak'

Htop SSS yazar doğru bir takas kullanımını rapor etmek mümkündür inanmadığını ve bu üst en metrik yanlış olduğunu belirtmektedir.
Oliver Evans,

0

StackOverflow'ta, ilk sorunuza zaten mükemmel bir cevap var ("Hangi süreç gerçekten takas kullanıyor?").

https://stackoverflow.com/a/7180078/1442301

Özet olarak, araçlar, takas kullanımı hakkında hiçbir şekilde doğru bilgi vermemektedir topveya htopsunmamaktadır. Sen dalmak gerekir /proc(sözde dosyasında klasörün /proc/$PID/smapsdaha doğru bilgi almak için).

Sonrası yukarıda belirtilen güzel bir şekilde yankılandı bu bilgileri almak için kısa bir kabuk komut dosyası içerir.



0

Yoklama ve araçların çıkışları ayrıştırma olmadan gibi vmstat, freeve topgörünüm için en iyi yer sistemine kök kullanıcı veya diğer kullanıcıların crontabs olabilir. Sistemdeki genel yük belirli bir zamanda güvenilir şekilde yükselirse, cronda kaynaklara ihtiyaç duyan bir süreç vardır. Aksi takdirde script, STDOUT'a giden her şeyi kaydeden yardımcı program ile her zaman bir getto fırlatma günlük kaydı aracı oluşturabilirsiniz .

Bu yüzden daha sonra incelenmek üzere çıktıyı yakalamak için bir kereye mahsus atma betiği yapmam gerekirse, bir terminalde şunu yazarım:

script /tmp/free.txt

ve sonra

while (true); do date; free; sleep 30; done

ve başka bir terminalde

script /tmp/top.txt

ve sonra

while (true); do date; top -n 1; sleep 30; done

ve ertesi sabah, her iki scriptistilayı da öldür topve ...free

bir kez daha bu bir getto yaklaşımı, ancak bir kereye ihtiyacınız var gibi görünüyor

ubuntu takas rehberini de okumak isteyebilirsiniz

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.