2016-03-30 21 views
2

Linux'ta, net kart bir paket aldığında, sabit bir kesintiyi tetikler ve sonra aramayı geri çağırır, bir NET_RX_SOFTIRQ değerini yükseltir, bu softirq sert cpu ile aynı işlemcide çalışır mı?hard interrupt ve softirq

+1

Genellikle donanım kesmesi çıkışında aynı çekirdek de çalışır. – 0andriy

cevap

1

Bir kesme isteği (IRQ), donanım düzeyinde gönderilen bir hizmet isteğidir. Kesmeler, ya özel bir donanım hattı ile ya da bir bilgi paketinde (bir Mesaj Sinyalli Ara Verme ya da MSI) bir donanım veriyolu üzerinden gönderilebilir. Kesmeler etkinleştirildiğinde, bir IRQ'nun alınması bağlamı kesmek için bir anahtar ister. Çekirdek kesilme gönderim kodu, IRQ numarasını ve ilişkili Kayıtlı Hizmet Rutinleri listesini (ISR'ler) alır ve her ISR'yi sırayla çağırır. ISR, kesintiyi kabul eder ve aynı IRQ'dan gelen gereksiz kesmeleri yok sayar, ardından kesintiyi işlemeyi bitirmek ve ISR'nin gelecekteki kesintileri görmezden gelmesini durdurmak için ertelenmiş bir işleyiciyi sıraya alır.

IRQ'lar, ilgili IRQ için ISR'yi yürütmesine izin verilen CPU çekirdeklerini tanımlayan bir "affinity" özelliğine, smp_affinity'ye sahiptir. Bu özellik, hem kesme afinitesini hem de uygulamanın bir veya daha fazla özel CPU çekirdeğine iş parçacığı özniteliğini atayarak uygulama performansını geliştirmek için kullanılabilir. Bu, belirtilen kesme ve uygulama konuları arasında önbellek hattı paylaşımına izin verir. smp_affinity için

# cat /proc/irq/32/smp_affinity 
    f 

varsayılan değer IRQ sistemdeki işlemci herhangi servis yapılabilir, yani f dir. aşağıdaki gibi, Bu değer 1 ayarlanması, sadece CPU 0 bu kesme hizmet anlamına gelir: Bir IRQ smp_affinity değiştirerek kesme direksiyon destekleyen sistemlerde, On

# echo 1 >/proc/irq/32/smp_affinity 
# cat /proc/irq/32/smp_affinity 
    1 

donanım kurar karar için o kadar Belirli bir CPU ile bir kesme hizmeti, donanım seviyesinde, çekirdeğe müdahale olmadan yapılır. RedHat'in DOC de

daha detaylı bilgi mevcut - 4.3 Interrupts and IRQ tuning

İlgili konular