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.