Hangi işlemin kswapd'ın kullanımda olmasına neden olduğunu nasıl anlarım?


23

% 100 CPU kullanarak kswapd görüyorum ... hangi işlemin kswapd adına bu kadar çok kullanıldığını nasıl anlayabilirim?


1
Uhm. kswapd işlemdir. Çekirdek adına çalışır.
mailq


2
@mailq ... evet, ancak bazı kullanıcı alanlarının belleğini değiştirmiyor mu? ve eğer öyleyse, o an hangi işlemin hafızasına geçtiğini nasıl anlarım?
Deshawn

Yanıtlar:


18

kswapd, tüm işlemler için fiziksel olarak mevcut olandan daha büyük bellek taleplerine yanıt olarak takas alanını yönetiyor .

İşlem agnostiktir, sadece hangi sayfaların erişildiği ve ne zaman ilgilendiği ile ilgilidir (elbette bundan daha karmaşıktır ancak işleri basit bir şekilde tutmak da bu şekilde görebiliriz).

Bu yüzden asıl soru “hangi süreçlerin kswapd'ın her zaman sayfalara ihtiyaç duymasına yol açan bellek üzerinde en büyük yüke sahip olduğu” dür.

Bu en kolay 'top' kullanılarak cevaplanır ve hafıza kullanımı sıralama moduna geçer.


Teşekkürler!. Dokunun Skswapd SADECE dokunulan gerçek sayfalar fiziksel aşıldığında ya da bir işlem hafızayı tahsis etmiş ya da SHM bölgesini eşlemiş ancak kullanmamış olsa bile tekme atıyor mu? Yani, sadece sorun olduğunda mı yoksa fiziksel hafıza mevcut olsa da sadece bazı işlemler boşta olduğu için kitap tutma ve işleri içeri ve dışarı takas etme gibi mi yapıyor?
Deshawn

Anladığım kadarıyla, kswapd normal şartlar altında ana hafızadan olması gerekmeyen sayfaları çıkartacaktır çünkü serbest bırakılan herhangi bir sayfa önbellekleme veya diğer işlemler için kullanılabilecek bir sayfadır. Yani, daha önce kullanılmamış bir sayfanın diskte olması, başka bir işlemden hafıza talebine cevaben hareket ettirme maliyetini azaltmaktan daha iyidir.
Paul,

Bir makinenin çok fazla takas alanı kullanması gerekse bile, bunu yapmak için% 100 CPU almaması gerekir. Bir şey garip.
Zaz

@Zaz Değişim yapmak için işlemci işlem gücü kullanması o kadar da fazla değildir, işlemcinin IOWAIT nedeniyle% 100 kullanılmasıdır. Her seferinde belleğin diskten değiştirilmesi gerektiğinde, CPU orada oturup beklemelidir - IOWAIT ve başka bir şey yapmıyor (ortalama).
Paul

@ Paul: Emin misiniz? topbana IO beklemesinde hiç zaman harcanmadığını ve sistemde neredeyse% 100 zaman harcandığını söylüyor. Daha fazla bilgi: kswapd, takas kullanımdayken genellikle% 100 CPU kullanıyor
Zaz

9

Senaryo yazabilirsin .. ama üstünden de yapabilirsin

Çalıştır üst sonra basın Ç ardından p daha sonra girmek

Artık tüm işlemler takas kullanımına göre sıralanıyor ve hangilerinin kullandığını görebilirsiniz


2
O benim için filtre seçeneklerini ortaya koyuyor, p'ye basıp enter tuşuna basıp "'dahil' filtre sınırlayıcısı eksik"
Shadow

@Shadow Aynı problem, işte alternatif bir komut unix.stackexchange.com/questions/128953/…
Björn

8

Eğer Ubuntu 15.10 ya da daha yenisindeyseniz, bu aslında bir hatanın sonucu olabilir , özellikle de sisteminiz bir takas bölümünün bulunmadığı sanal bir makine ise (örneğin, AWS EC2). Sorun diğer dağıtımlarda da var , ancak yazım itibariyle aynı düzeltmenin evrensel olarak işe yarayıp yaramadığı belli değil.

Geçici bir geçici çözüm:

sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot

Bunun, Xen ve Hyper-V sanal makineleri için güvenli RAM / CPU'ları devre dışı bırakacağını unutmayın.


Bu, Kubuntu 16.10'daki sistemimde hiçbir zaman ortaya çıkmamıştı, çünkü geçici çözüm zaten bir süre önce etkindi.
jeteon,

@jeteon Bu davranışa neden olabilecek birden fazla sorun vardır; bu sadece özellikle yaygın bir şey olur.
Zenexer

Evet. echo 3 > /proc/sys/vm/drop_cachesOlmaya başladığında bunu hafiflettiğini öğrendim . Önceden bir cron işi emri aldım ve şimdi bilgisayardan uzaktayken, en azından OOM katliamının süresini sınırlıyor gibi görünüyor.
jeteon,

6

Ayrıca bir kswapdyerlerde bir böcek var gibi görünüyor , umarım sadece eski çekirdekler üzerindedir.

Neredeyse her gün şimdi kswapd, bazı makinelerde daha büyük bir kümedeki (mevcut olmayan bir çekirdekli) rasgele besleniyor. Her iki kswapd işleminde% 100 CPU. Başka çalışan işlem yoktur (ssh kabuğu hariç), bol miktarda boş RAM (700 MB'dan fazla) ve hiç SWAP kullanılmamıştır. Takas yok, takas yok.

Henüz hiçbir şey açıklamıyor, neden belirli bir makineye isabet edildiğini ve diğerinin neden gelmediğini. Tamamen rastgele görünmüyor, çünkü genellikle kısa sürede birden fazla makineye çarpıyor. Boşta kalan makinelerin yanı sıra yüksek basınç altındaki makinelerin de etkisi (!) Daha azdır. Bu nedenle iş yükü ile bir şeyler yapması gerekir ve yalnızca makine boşta değilse veya çok meşgul değilse vurur.

Sorun grev olursa artık hiçbir şey yardımcı olmaz. Tüm süreçleri öldürmek (katlanamaz hale geldi), tüm dosya sistemlerini sökmek, hiçbir şey. kswapdhala% 100 CPU'da kalıyor. SMP çekirdeğindeki bazı spinlock yarışlarından şüpheleniyorum, fakat aynı zamanda hatalı olduğum da muhtemel.

Belki de cevabımı görün serverfault.com/questions/316995/#493257

Notlar:

  • Etkilenen makineleri yeniden başlatmak çoğu zaman başarısız oluyor çünkü kapatma işlemi bir yerde asılı kalıyor.
  • İnternete doğrudan bağlantı yoktur. Yabancı sebepler olası değildir.
  • Makinelerin işlediği iş yükü tipine bir yük perspektifinden bağlı gibi görünüyor çünkü daha önce hiç etkilenmemiş makinelerimiz var.
  • Üzgünüm, ne yaptığımıza ve neden olduğu konusunda daha spesifik olamam.
  • Evet, spekülasyon yapıyorum. Çünkü bugün çok şaşırtıcı bir etki.

Bu tarihi. RedHat onayladı: NFS istemcisi ile birlikte bir çekirdek 2.6.18-194.el5 sorunuydu. Zaten 2012 yılında düzeltildi. Daha fazla bilgi için metindeki bağlantılı cevaba bakınız. Bugün bu isabet ederse, muhtemelen başka bir neden olabilir.
Tino

1
Bu hala bazı yerlerde bir sorun. Bunlardan tonlarca pop gördüm. burada ve işte bazı örnekler.
trueCamelType
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.