Linux sunucusunda bellek kullanımı ve yükleme ortalaması nasıl anlaşılır


57

128 GB belleğe ve 24 çekirdeğe sahip bir linux sunucu kullanıyorum. Ne kadar kullanıldığını görmek için üstünü kullanıyorum. Çıktısı yazı sonunda yapıştırılır. İşte iki soru:

(1) Çalışan işlemlerin her birinin çok küçük bir bellek yüzdesini (% MEM,% 0.2'den fazla değil ve en fazla% 0.0) kapladığını, ancak toplam belleğin neredeyse dördüncü çıktı satırındaki gibi nasıl kullanıldığını görüyorum ( "Mem: 130766620k toplam, 130161072k, kullanılan 605548k ücretsiz, 919300k tamponlar")? Tüm işlemlerde kullanılan bellek yüzdesinin toplamının neredeyse% 100'e ulaşması pek mümkün görünmüyor, değil mi?

(2) ilk satırdaki yük ortalamasını nasıl anlayacağınızı ("yük ortalaması: 14.04, 14.02, 14.00")?

Teşekkürler ve saygılar!

Düzenle:

Teşekkürler!

Ayrıca, bir sunucunun çok yüklü olup olmadığını belirlemek için kullanılan bellek yüzdesini temel alan bazı kaba rakamları duymayı seviyorum, çünkü bir zamanlar mevcut yükü anlamadan sunucuyu kırdı.

Takas neredeyse hafıza ile aynı mıdır? Örneğin, bellek ve takas neredeyse aynı boyutta olduğunda, bellek neredeyse tükeniyor ancak takas hala büyük ölçüde boşsa, yalnızca kullanılan bellek + takas yüzdesi hala yüksek değil ve diğer yeni çalıştırıyormuş gibi görüntüleyebilir miyim? süreçler?

CPU veya bellek (veya bellek + takas) kullanımını birlikte nasıl düşünürsünüz? Biri çok yükseğe ya da ikisine birden ulaşırsa endişeleniyor musunuz?

Üst çıkışı :

$ top

 
ilk - 12:45:33 kadar 19 gün, 23:11, 18 kullanıcılar, yük ortalama: 14.04, 14.02, 14.00
Görevler: 484 toplam, 12 koşu, 472 uyku, 0 durdu, 0 zombi
Cpu (lar):% 36,7 bize,% 19,7 sy,% 0,0 ni,% 43,6 id,% 0,0 wa,% 0,0 hi,% 0,0 si,% 0,0 st
Mem: 130766620k toplam, 130161072k kullanılmış, 605548k ücretsiz, 919300k tamponlar
Takas: 63111312k toplam, 500556k kullanılmış, 62610756k ücretsiz, 124437752k önbelleğe alınmış

  PID KULLANICI PR NI VIRT RES SHR S% CPU% MEM ZAMANı + KOMUTANLIĞI
 6529 sanchez 18 -21075m 219m 13m S100 0.2 13760: 23 MATLAB
13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3: 56.75 saçma
13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2: 04.89 saçma
14542 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.34 saçma
14544 timothy 18 -2 2888 2076 400 R 100 0.0 1: 06.14 veri toplama
 6183 sanchez 18-21133m 195m 13m S100 0.2 13676: 04 MATLAB
 6795 sanchez 18 -21079m 210m 13m S100 0.2 13734: 26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11: 33.93 saçma 
12438 timothy 18 -2 48336 37m 1216 R 100 0,0 5: 38,17 saçma
13661 timothy 18 -2 48336 37m 1216 R 100 0.0 2: 44.13 saçma
14098 timothy 18 -2 48336 37m 1204 R 100 0.0 1: 58,31 saçma
14335 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.93 saçma
14765 timothy 18 -2 48336 37m 1196 R 99 0.0 0: 32.57 saçma
13445 timothy 18 -2 48336 37m 1216 R 99 0.0 3: 01.37 saçma
28990 root 20 0 0 0 0 S 2 0,0 65: 50,21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0.0 0: 04.04 üst
 1240 kök 15 -5 0 0 0 S 0 0,0 16: 07,11 kjournald
 9019 kök 20 0 296m 4460 2616 S 0 0.0 82: 19.51 kdm_greet
    1 kök 20 0 4028 728 592 S 0 0,0 0: 03,11 init
    2 root 15 -5 0 0 0 S 0 0,0 0: 00,00 kthreadd
    3 kök RT -5 0 0 0 S 0 0.0 0: 01.01 göç / 0
    4 kök 15 -5 0 0 0 S 0 0,0 0: 08,13 ksoftirqd / 0
    5 kök RT -5 0 0 0 S 0 0,0 0: 00,00 bekçi / 0
    6 kök RT -5 0 0 0 S 0 0,0 17: 27,31 göç / 1
    7 kök 15 -5 0 0 0 S 0 0,0 0: 01,21 ksoftirqd / 1
    8 kök RT -5 0 0 0 S 0 0,0 0: 00,00 bekçi / 1
    9 kök RT -5 0 0 0 S 0 0,0 10: 02,56 göç / 2
   10 kök 15 -5 0 0 0 S 0 0,0 0: 00,34 ksoftirqd / 2
   11 kök RT -5 0 0 0 S 0 0.0 0: 00.00 bekçi / 2
   12 kök RT -5 0 0 0 S 0 0.0 4: 29.53 göç / 3
   13 kök 15 -5 0 0 0 S 0 0,0 0: 00,34 ksoftirqd / 3

2
Hafıza hakkında iyi bir cevap için buna bakın. serverfault.com/questions/38065/#38074
Zoredache

Ve bu cevap , yük ortalaması hakkında kısa bir özet (ya da detaylar için uzun süredir okunan ).
Nickolay

Yanıtlar:


56

(1) Çalışan işlemlerin her birinin çok küçük bir bellek yüzdesini (% MEM,% 0.2'den fazla değil ve en fazla% 0.0) kapladığını, ancak toplam belleğin neredeyse dördüncü çıktı satırındaki gibi nasıl kullanıldığını görüyorum ( "Mem: 130766620k toplam, 130161072k, kullanılan 605548k ücretsiz, 919300k tamponlar")? Tüm işlemlerde kullanılan bellek yüzdesinin toplamının neredeyse% 100'e ulaşması pek mümkün görünmüyor, değil mi?

Şu anda kullandığınız ne kadar bellek kullandığını görmek için çalıştırın free -m. Gibi çıktı sağlayacaktır:

             toplam kullanılan ücretsiz paylaşılan tamponlar önbelleğe alınmış
Mem: 2012 1923 88 0 91 515
- / + tamponlar / önbellek: 1316 695
Swap: 3153 256 2896

'Kullanılan' (1923) değeri, neredeyse her zaman en üst satırdaki mem değeriyle (2012) eşleşir. Linux disk bloklarını önbelleğe almak için herhangi bir boş belleği kullanmayı seviyor (515).

Bakmak için kullanılan şekil, arabellek / önbellek satırı kullanılan değerdir (1316). Uygulamalarınızın şu anda kullandığı alan budur. En iyi performans için, bu numara toplam (2012) belleğinizden az olmalıdır. Bellek dışı hatalarını önlemek için, toplam bellekten (2012) ve takas alanından (3153) daha az olması gerekir.

Belleğin ne kadar boş olduğunu hızlı bir şekilde görmek istiyorsanız, arabellek / önbellek satır boş değerine (695) bakın. Bu, toplam hafızadır (2012) - kullanılan gerçek (1316). (2012 - 1316 = 696, 695 değil, bu sadece bir yuvarlama sorunu olacaktır)

(2) ilk satırdaki yük ortalamasını nasıl anlayacağınızı ("yük ortalaması: 14.04, 14.02, 14.00")?

Yük ortalamasıyla ilgili bu makale güzel bir trafik benzetmesi kullanıyor ve şu ana kadar bulduğum en iyisi: Linux CPU Yükünü Anlamak - Ne zaman endişelenmelisiniz? . Senin durumunda, insanların belirttiği gibi:

Çok işlemcili sistemde, yük mevcut işlemci çekirdeği sayısına göredir. "% 100 kullanım" işareti tek çekirdekli bir sistemde 1.00, çift çekirdekli 2.00, dört çekirdekli 4.00 vb.

Bu nedenle, ortalama 14.00 ve 24 çekirdekli bir yük ile sunucunuz aşırı yüklenmekten uzaktır.


17

Linux dahil Unix benzeri sistemler mevcut RAM'in en verimli şekilde kullanılmasını sağlamak için tasarlanmıştır. Çok genel anlamda, her MB RAM'in içinde olabileceği 3 durum vardır:

  1. Beleş
  2. İşlem tarafından kullanılan
  3. Tamponlar için kullanılır

3. durum yalnızca boş alan olarak kullanılır ve gerektiğinde yeniden atanması amaçlanır, yani programlar için toplam kullanılabilir belleğiniz gerçekten Free + UsedforBuffers'dır. Bu nedenle, herhangi bir özel işleme atanmış gibi görünen tampon ayrılmış alanı gerçekten göremezsiniz.

Yük ortalama sorunuz, kolayca yanlış yorumlanabileceğinden biraz daha ilginç. Hikayenin tamamı için bu linuxjournal makalesine bakın . En iyi özet, makaleden doğrudan alıntı yapılmasıdır.

Yük ortalaması hesaplaması, en iyi şekilde çalışan veya kesintisiz olarak işaretlenmiş Linux'un çalışma sırasındaki işlemlerin hareketli bir ortalaması olarak düşünülebilir.

Yani, yük ortalamanızı (çalışan işlem sayısı) + (GÇ'de bekleyen işlem sayısı) olarak düşünebilirsiniz. Herhangi bir zamanda $ CORE işleminin gerçekleştirilebileceğini unutmayın, ortalama 14 ortalama yükünüzün oldukça düşük olduğunu söyleyebilirim.


Teşekkürler! Ağır yüklü olarak kabul edilen ve yeni süreçleri çalıştırmamakta daha iyi kullanılan bellek (veya bellek + takas) yüzdesi nedir? Hem hafızaya hem de hafıza + değişimine bakar mısınız? Kullanılan takas üstte gösterilen takas boyutu gerçekten kullanılmış mı? CPU yük ortalaması ile ilgili olarak, gerçek yükü "yük ortalaması / çekirdek numarası" ile ölçüyor musunuz? Sunucunun ağır bir şekilde yüklendiğini ne kadar düşünürsünüz? Teşekkürler ve saygılar!
Tim

2
Yük sadece bir göstergedir. Genel bir kural olarak, çekirdeklerden daha büyük bir yük kötü bir şeydir. Genellikle kullanılan hafıza yüzdesinin yüksek olması kötü bir şeydir. 'Bu çok iyi' diyebileceğiniz ikili bir değer değil. RAM'iniz tükenirse, daha fazla işlem yürütecek kadarınız olmaz. Eğer bitmezseniz, bol miktarda var. Durumunuzun özelliklerine çok bağlı.
Cian

4

Gönderen saradam sayfası:

       Yük ortalaması ortalama çalıştırılabilir sayı olarak hesaplanır veya 
       çalışan görevler (R durumu) ve kesintisiz olarak görev sayısı
       belirtilen aralıkta uyku (D durumu).

Gönderen uptimeadam sayfası:

       Sistem yük ortalamaları, ya ortalama olan işlem sayısıdır.
       çalıştırılabilir veya kesintisiz bir durumda. Çalıştırılabilir bir durumda bir işlem
       ya CPU'yu kullanıyor ya da CPU'yu kullanmayı bekliyor. Unin‐'de bir süreç
       kesilebilir durum bazı G / Ç erişimini bekliyor, örneğin disk bekliyor.
       Ortalamalar üç zaman aralığında alınır. Ortalama yük
       Bir sistemdeki CPU sayısı için normal değildir, bu nedenle bir yük
       1 yaş, tek bir CPU sisteminin her zaman 4
       CPU sistemi,% 75 boşta kaldığı anlamına gelir.

3
  1. Linux, bir süredir hafızasını toptemelde işe yaramaz hale getirecek şekilde yönetti , genellikle makinenin hafızasının çoğunu bir kullanıcı işlemi gerektirmediğinde çeşitli kullanımlar için ayrılmış tutar.
  2. Yük ortalaması, çalışan veya çalışmayı bekleyen ortalama işlem sayısıdır. Genellikle sistem gecikmesi / yanıt verebilirliği ile güçlü bir negatif korelasyona sahiptir, bu yüzden mümkün olduğunca düşük olmasını istersiniz. İşlemcilerinizin her biri herhangi bir zamanda bir şey çalıştırabildiğinden, 14 yaşında oldukça iyi durumdasınız.

Teşekkürler! 1 ile ilgili olarak, bazı işlemlerin üst sıralarda görünmediğini, ancak çok miktarda bellek kullandığını mı kastediyorsunuz? Ya da bellekle ilgili dördüncü çıktı satırının ("Mem: 130766620k toplam, 130161072k kullanılmış, 605548k ücretsiz, 919300k arabellek") yanıltıcı olduğunu, üstte ve benim durumumda gösterilen tüm işlemler tarafından kullanılan bellek yüzdesinin toplamına bakmam gerekir. Bazı yeni bellek tüketen işlemleri güvenle çalıştırabilir miyim?
Tim

2
Diğer cevapların da belirttiği gibi, yük ortalaması işlemci sayısıyla karşılaştırılmalıdır, yani 14 çekirdekli bir sistemde o kadar fazla değildir. Tek çekirdekli bir sistemde 14/24 = 0.58 gibi bir şey olurdu (iyi bir çeşit).
David Z

@Tim: Ben ikincisini kastediyorum.
kaos

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.