Kworker, nedir ve neden bu kadar çok işlemci kullanıyor?


136

Geçenlerde Kubuntu Natty Beta 1'e yükselttim ve işlem yöneticisi ile ilgili birçok sorun yaşıyorum . Bazı anlarda işlemcimin neredeyse yarısını kullanıyor. Ayrıca, garip bir şekilde USB portlarımı etkiliyor gibi görünüyor; Ne zaman bir USB sürücüsüne taksam , işlem kimliği hiper sürücüye giriyor, bu da beni çalışamamaya bırakıyor.

Bir hata yapmayı düşündüm ama ilk önce ne yapmam gerektiğini düşündüğüm iş arkadaşım hakkında makul bir açıklama bile bulamadım .


Garip, kworker% 10 oranında çalışıyor ve uyandırmaya katkıda bulunuyor, ancak Kubuntu programım yüklü değil. Alos Nepomuk yüklü değil.
dago

1
şaşkınlığın tepkisinden şimdi bence çekirdekle ilgisi olduğunu düşünüyorum (yani kworker'daki k çekirdek içindir). bu yüzden de Ubuntu makinenizde çalışan bir kworker'ınız olurdu.
davorao

1
Bu cevap, bir çalışanın ne yaptığını bulmak için de yararlı olabilir: unix.stackexchange.com/questions/22851/…
anarcat

1
Bu son işletim sistemi güncellemesini almamalıydın. Şanslıysanız, bir sonraki düzeltecektir.
nobar

Yanıtlar:


109

"kworker", özellikle kesmeler, zamanlayıcılar, G / Ç, vb. durumlarda çekirdeğin gerçek işlemlerinin çoğunu gerçekleştiren, çekirdek çalışan dişlileri için bir yer tutucudur. Bunlar genellikle tahsis edilenlerin büyük çoğunluğuna karşılık gelir. " sistem "çalışan işlemler zamanı. Sistemden herhangi bir şekilde güvenli bir şekilde çıkarılabilecek ve nepomuk veya KDE ile tamamen ilgisi olmayan bir şey değildir (bu programların çekirdeğin bir şey yapmasını gerektiren sistem çağrıları yapması dışında).

2.6.36 gelişiminde başlayan nispeten boşta çalışan sistemler için aşırı çalışma aktivitesi hakkında bazı raporlar vardı ( örnek tartışma ) ve 2.6.38 ile ilgili geniş karışıklık ve sorun raporları vardı (bu raporların çoğu "Natty" kelimesini içermesine rağmen, sanırım. bu insanlar 2.6.35 (Ubuntu 10.10'da dağıtılmıştır) ile 2.6.38 (Ubuntu 11.04'te dağıtılmıştır) arasında bir çekirdek kullanmamışlardır.

Bunu bir veya başka bir kullanıcı için "düzelten" bir şey hakkında birçok rapor buldum. Çoğu "düzeltmeler", çeşitli türlerdeki çekirdeğin güncellemeleriyle ilişkili görünmektedir. Güncellemenin belirli bir konuya göre izlenebildiği yerlerde, genellikle yanlış davranmamak için yamalanmış bazı sürücü veya çekirdek hizmetleri gibi görünüyor: Çekirdeğin bir davranışa neden olabilecek çok sayıda şey olduğu izlenimini edindim. aşırı kworker kullanımı olarak görülmektedir.

Aşırı işçi aktivitesi nedeniyle sistemi kullanılamaz bulursanız, daha az şey yapmayı denemenizi tavsiye ederim. Hiçbir şey yapmadığınızı düşünüyorsanız, uzun süredir devam eden hizmetleri veya zamanlayıcıları (RSS okuyucuları, posta okuyucuları, dosya dizinleyicileri, etkinlik izleyicileri vb.) Kapatmayı deneyin. Bu işe yaramazsa, yeniden başlatmayı deneyin. Sisteminiz önyükleme öncesi bir ortamda donanımı etkinleştirmenize veya devre dışı bırakmanıza izin veriyorsa, kullanmadığınız donanımı kapatmayı deneyin. Bir şey yapmadan önce her yeniden başlatmada gerçekleşirse, şeyleri kaldırmayı deneyebilirsiniz, ancak bu noktada bu aşırı yüke neden olan belirli uygulamaları izlemek için sistem çağrısı profilleme araçlarını kullanmak isteyeceksiniz.

Özel sisteminizin bu davranışı gelecekteki bir çekirdek yükseltmesi ile ifade etmeyi bırakacağı ümit edilmelidir (ve bunun en yaygın nedenlerinin birçoğu çözüldü).


1
Bununla ilgili olduğunu düşündüğüm yavaş giriş problemim vardı; Bu şekilde başlatılan her şeyi erteleyerek bu sorunu gidermeyi başardım
Aquarius Power

1
Belki de bu gereksiz, ama açıkça açıkça ifade edilen bir cevapta övgüler var. Bu biraz iyi İngilizce ifade efendim.
Jon Carter

81

Kworker nedir? kworker"İş" yapan bir Linux çekirdeği süreci (işlem sistemi çağrıları) anlamına gelir. Bunların birçoğunu işlem listenizde bulabilirsiniz: kworker/0:1ilk işlemcinizdeki çekirdek, kworker/1:1ikincinizdeki vb.

Kworker neden işlemcinizi çalıştırıyor? Bir çalışmacının neden CPU'nuzu boşa harcadığını bulmak için CPU backtraces oluşturabilirsiniz: İşlemci yükünüzü ( topya da bir şeyle birlikte) izleyin ve yüksek yük momentlerinde, bir backtrace oluşturmak için kworkeryürütün echo l > /proc/sysrq-trigger. (Ubuntu'da bunun için giriş yapmanız gerekir sudo -s). Bunu birkaç kez yapın, ardından dmesgçıkışın sonunda geri çekmeleri izleyin . CPU geri çekmelerinde ne sıklıkta olduğunu görün, umarım sizi sorununun kaynağına yönlendirir.

Örnek: e1000e. Benim durumumda, hemen hemen her seferinde bunun gibi bir geri adım buldum:

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

Beni e1000eEthernet kartı modülündeki bir soruna işaret etti ve gerçekten sudo rmmod e1000ede yüksek CPU yükünü derhal ortadan kaldırdı [ e1000e bug # 26 ].


4
echo l > /proc/sysrq-triggersysrq: SysRq : This sysrq operation is disabled.ne yazık ki söyleyerek proxmox üzerinde çalışmak gibi görünüyor .
hak8 veya

1
sysrq bkz sysctl -w kernel.sysrq = 1 ile reenabled gerek askubuntu.com/questions/911522/...
Sebastien'i

E1000'in soruna neden olduğunu nasıl anladınız? Sırf tekrarlandığından dolayı mı?
onurcanbektas

@onurcanbektas Evet - en sık tekrarlanan sonuç en olası nedendir. Backtraces spot olduğundan, takılıyken CPU'nun neyle meşgul olduğunu kontrol eder.
tanius

70

Kworker neden işlemcinizi etkiliyor? (Devam)? Buradaki diğer cevabımın bir alternatifi olarak Perf, hangi çekirdek görevlerinin CPU'nuzu etkilediğini analiz etmenin daha profesyonel bir yoludur:

  1. Yükleyin perf:

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (İkinci paketin çekirdek sürümünüzle eşleşmesi gerekir. İlk önce sadece kurabilir linux-tools-commonve perfhangi pakete ihtiyacı olduğunu size bildirmek için çağrı yapabilirsiniz .)

  2. Tüm işlemcilerinize 10 saniyelik backtraces kaydedin:

    sudo perf record -g -a sleep 10
    
  3. Kaydınızı analiz edin:

    sudo perf report
    

    (Çağrı grafik gidin , , , ve Enter.)


2
Sistemimde bir VMware sanal makinesinin içinde perfçalışarak, sorunu sd_modçekirdek modülüne kadar izledim . vmxDosyadaki SCSI'yi devre dışı bırakmak , modülün yüklenmesini engelledi ve sistemi normal hıza geri scsi0.present = "FALSE"
getirdi

E: linux-tools-3.11.0-15-generic paketi bulunamıyor E: glob 'linux-tools-3.11.0-15-generic' paketi hiçbir paketi bulamadı E: regex ile herhangi bir paket bulunamadı 'linux-tools-3.11.0-15-generic'
Paddy

@Paddy: Lütfen cevabı tekrar kontrol et :-) "[linux-tools - * - generic] paketi, çekirdek sürümünüze uymalıdır. İlk önce sadece linux-tools-common yükleyebilir ve hangi paketi size söyleyeceğini bildirmek için perf çağrılarını yapabilirsiniz. ihtiyacı var."
tanius

8

Sadece herkese bildirmek için. Bu sorunla karşılaştım, yüklü perf (ki bu harika bir araç), kilitleme ve XFS'ye dikkat çekti. Bu NFS'ye işaret etti. Sonra farkettim ki montajlarımdan biri boş. Boş alan açmak, kworker CPU'sunun 0'a düşmesine neden oldu.

Yani görünüşe göre bu yoğun bir NFS sunucusundaki boş alanın tükenmesinin bir belirtisi olabilir!


1
Belirli bir sanal kutu çalışırken bir bilgisayar erimesi yaşadığımı fark ettim. Birinin dosyaları paylaşmak için ana bilgisayarımla NFS çalıştırdığı ortaya çıktı. Ancak hiçbir yere yakın değildi. NFS'nin çıkarılması sorunu "çözdü". Sanırım bir sshfs mount ile paylaşacağım.
Programcı

4

Geçenlerde Ubuntu Natty'yi harici bir sürücü usb wd pasaportuna yükledim. Yaklaşık iki yıllık masaüstümde başladığımda her şey bir cazibe gibi çalışıyor. Yeni dizüstü bilgisayarıma (MSI gt680r sistemi) başladığımda, bilgisayarı uyku modundan çıkardıktan sonra veya başka bir usb disk taktığımda yavaşlıyor.

Kworker işlemleri gittikçe daha fazla işlemci alıyor ve fare zaman zaman donuyor.

İşe yaramayan çeşitli forumlarda birkaç çözüm okudum.

Dizüstü bilgisayarımın bios'larına girdim, orada:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

İçin değiştirdim:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

ve o zamandan beri, artık dizüstü bilgisayarımda natty ile donmuyor.

Sorun giderildiyse ve ne zaman düzeltildiyse eli geri etkinleştiririm.


1
Bunun neden olduğunu açıklayan var mı? XCHI nasıl bağlanır?
GuySoft

0

Nepomuk'u devre dışı bırakmanın size yardımcı olabileceğini düşünüyorum:

http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2-kubuntu-lucid-10-04/


teşekkürler ama o zamandan beri Kubuntu 11.04'ün yeni bir kopyasını kurdum ve daha önce bahsedilen sorun ortadan kalktı.
davorao

1
Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak tercih edilir.
fossfreedom
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.