Estou executando o X86_64 Ubuntu Desktop 15.04 com o kernel mais recente (ou seja, 3.19.0-22-genérico). Eu estava inspecionando as interrupções e IRQs e notei que a máscara de bits para smp_affinity era duas vezes maior do que deveria ser e estou me perguntando por que isso acontece?
Mas, mais explicitamente:
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 21 0 0 0 IR-IO-APIC-edge timer
1: 113 1780 107 90 IR-IO-APIC-edge i8042
8: 0 1 0 0 IR-IO-APIC-edge rtc0
9: 455 1106 71 57 IR-IO-APIC-fasteoi acpi
12: 10768 131886 9077 7920 IR-IO-APIC-edge i8042
...
E, por exemplo, por exemplo:
$ cat /proc/irq/0/smp_affinity
ff
$ cat /proc/irq/8/smp_affinity
0f
$ cat /proc/irq/47/smp_affinity
04
Esperei ver apenas 1
dígito em vez de 2
. Por exemplo, em IRQ 0
, esperava ver ' f
' em vez de ' ff
'. A razão disso é que eu tenho apenas 4
CPUs pela primeira listagem de código e uma máscara de 4
bits seria suficiente para cobri-los. Ou seja, ' 1111
' cobriria todos os 4
CPUs e, portanto, IRQ 0
seria ' f
'. Alguém saberia se isso é um bug ou se ' ff
' faz sentido e, então, alguém poderia me explicar?
Além disso, observe como em IRQ 8
é ' 0f
', que no contexto dos meus 4
CPUs significa que todos os 4
deles seriam segmentados por essa interrupção. Se for esse o caso, então é exatamente como com IRQ 0
, que também cobre todas as CPUs ( 4
no total). Em outros termos, ' 0f
' é equivalente a ' ff
', o que não faz sentido para mim: (
Qualquer tipo de explicação ou orientação para onde olhar mais seria muito apreciado.
Obrigado antecipadamente.