Neden tüm CPU'larım kullanarak ksoftirqd / 0 işlemi oluyor?

60

Ubuntu'nun biraz halsizce koştuğunu hissediyordum ve sonra üzerinde çalışan süreçleri görmeye gittim ve% 50'nin% co_de adlı% CPU denen bir şey kullandığını buldum.

Bu işlemin ne yaptığını bilen var mı, neden bu kadar çok CPU kullanıyor ve daha az CPU yoğunluğu nasıl yapıyor?

    
sordu dasen 17.10.2010 06:55

3 cevap

66

Bilgisayarınız, IRQ'lar aracılığıyla bağlı aygıtlarla iletişim kurar (kesme istekleri). Bir aygıttan bir kesme geldiğinde, işletim sistemi ne yaptığını duraklatır ve bu kesmeyi adreslemeye başlar.

Bazı durumlarda IRQ'lar birbiri ardına çok hızlı gelirler ve işletim sistemi bir diğerinin gelmesinden önce servis işlemlerini tamamlayamaz. Yüksek hızlı ağ kartı kısa bir zaman aralığında çok sayıda paket aldığında bu olabilir.

İşletim sistemi IRQ'ları geldikçe işleyemediğinden (birbiri ardına çok hızlı geldiği için), işletim sistemi bunları daha sonra işlemek için ksoftirqd adlı özel bir iç işlemle sıraya koyar.

ksoftirqd , CPU zamanının küçük bir yüzdesinden fazla alıyorsa, bu, makinenin ağır kesme yükü altında olduğunu gösterir.

    
verilen cevap Lucian Adrian Grijincu 17.10.2010 13:37
18

Man sayfasından, ksoftirqd , makine ağır yumuşak kesilme yükü olduğunda çalışan her bir işlemci için çekirdek çekirdeğidir.

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

cat /proc/interrupts

smp_affinity cinsinden sayı, hex kodunda temsil edilen bir cpus bitmapidir. En sağdaki bit en az önemli olanıdır. Örneğin, sistemimin 8 çekirdeği var. Yalnızca 1, 3 ve 4 numaralı çekirdeği kullanmak istediğimde, smp_affinity değerini 1a olarak ayarlayacağım:

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, (8 çekirdekli sistemimde eth0) 29 no'lu interrupt'ı alabilmek için herhangi bir cpu kurdum:

sudo echo ff > /proc/irq/29/smp_affinity
    
verilen cevap Eduardo Bezerra 13.07.2012 16:12
2

ksoftirqd, makine ağır yumuşak kesilme yükü altındayken çalışan bir işlemci çekirdeği iş parçacığıdır. Bu nedenle, cpu'nuzu değil, IRQ yükünüzü azaltır.

    
verilen cevap akshatj 17.10.2010 12:37

Etiketlerdeki diğer soruları oku