Neden ksoftirqd / 0 işlemcimin tümünü kullanıyor?


67

Ubuntu'nun biraz halsiz çalıştığını hissediyordum ve ardından üzerinde çalışan süreçleri görmeye gittim ve CPU'nun% 50'sine benzeyen bir şey kullanan bir tane buldum ksoftirqd/0.

Bu sürecin ne yaptığını, neden bu kadar çok CPU kullandığını ve işlemciyi nasıl daha az yoğun hale getireceğini bilen var mı?

Yanıtlar:


77

Bilgisayarınız, kendisine bağlı aygıtlarla IRQ'ler üzerinden iletişim kurar (istekleri kesme). Bir kesinti bir cihazdan geldiğinde, işletim sistemi ne yaptığını duraklatır ve bu kesmeyi ele almaya başlar.

Bazı durumlarda IRQlar birbiri ardına çok hızlı bir şekilde gelir ve işletim sistemi bir başkası gelmeden önce birisine hizmet veremez. Bu, yüksek hızlı bir ağ kartı kısa sürede çok sayıda paket aldığında olabilir.

İşletim sistemi geldiğinde IRQ'ları işleyemediğinden (birbiri ardına çok hızlı geldikleri için), işletim sistemi bunları adlandırılmış özel bir iç işlem tarafından daha sonra işlenmek üzere sıraya koyar ksoftirqd.

Eğer ksoftirqdbir CPU zamanı minik yüzdesinden daha fazla alıyor, bu makine ağır kesme yük altında olduğunu gösterir.


22

Man sayfasından, ksoftirqdmakine ağır yumuşak kesme yükü altında çalışan bir cpu başına çekirdek ipliktir.

Hangi cpu'nun kesin bir kesinti alacağını tanımlayarak ayarları biraz değiştirebilirsiniz. Bunu içeriğini değiştirerek yaparsınız /proc/irq/$interrupt_number/smp_affinity. Aşağıdakileri yaparak kesintilerin ve anlamlarının bir listesini alabilirsiniz:

cat /proc/interrupts

Sayı, smp_affinityhex kodunda gösterilen bir cpus bitmap'idir. En sağdaki bit en önemli olanıdır. Örneğin, sistemimin 8 çekirdeği var. Yalnızca 1, 3 ve 4 numaralı çekirdekleri kullanmak isteseydim, smp_affinity değerini şu şekilde ayarlarım 1a:

cpu_7 cpu_6 cpu_5 cpu_4 cpu_3 cpu_2 cpu_1 cpu_0
  0     0     0     1     1     0     1     0    = 0001 1010 = 1a (in hex)

Şahsen, kesme 8'i (8 çekirdekli sistemimde eth0) alabilmek için herhangi bir işlemci kurdum:

sudo echo ff > /proc/irq/29/smp_affinity

4

ksoftirqd, makine ağır yumuşak kesme yükü altındayken çalışan bir işlemci başına çekirdek ipliğidir. Bu nedenle, CPU'nuzu yemez, IRQ yükünü azaltır.


1
Askubuntu.com olduğunu biliyorum, ancak Raspberry Pi'de tam tersi, ksoftirqd, yoğun IRQ yükünde tüm CPU'yu yiyor.
machineaddict

Anladığım kadarıyla ksoftirqd ertelenen softirq'leri (yeterince hızlı bir şekilde işlenemediğinde) işler. Çok fazla softirq olduğunda ve / veya işlemesi için çok fazla CPU zamanı harcadığında, ksoftirqd çok fazla CPU zamanı tüketir.
pabouk
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.