it-swarm-tr.com

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

Ubuntu'nun biraz halsiz çalıştığını hissediyordum ve ardından üzerinde çalışan işlemleri görmeye gittim ve hangisinin ksoftirqd/0 adlı bir CPU'nun% 50 gibi bir şey kullandığını buldum.

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ı?

66
dasen

Bilgisayarınız, kendisine bağlı aygıtlarla IRQ'ler aracılığıyla 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 daha sonra işlenmek üzere ksoftirqd adlı özel bir iç işlem tarafından sıraya alınır.

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

75

Man sayfasından, ksoftirqd, makine ağır yumuşak kesme yükü altındayken çalışan bir işlemci başına çekirdek ipliğidir.

Hangi CPU'nun belirli bir kesmeyi seçtiğini tanımlayarak ayarları biraz düzenleyebilirsiniz. Bunu, /proc/irq/$interrupt_number/smp_affinity içeriğini değiştirerek yaparsınız. Aşağıdakileri yaparak kesintilerin ve anlamlarının bir listesini alabilirsiniz:

cat /proc/interrupts

smp_affinity içindeki sayı, hex kodunda gösterilen bir cpus bit eşlemidir. 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 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
21
Eduardo Bezerra

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

3
akshatj