Você define IRQBALANCE_BANNED_CPUS em / etc / default / irqbalance . Eu encontrei isso procurando em /etc/init.d/irqbalance . Mas quais são os valores válidos para essa configuração? Da página de manual da Red Hat:
This is a hex mask without the leading '0x', on systems with large numbers of processors each group of eight hex digits is sepearated ba a comma ','. i.e.
export IRQBALANCE_BANNED_CPUS=fc0
would prevent irqbalance from assigning irqs to the 7th-12th cpus (cpu6-cpu11) orexport IRQBALANCE_BANNED_CPUS=ff000000,00000001
would prevent irqbalance from assigning irqs to the 1st (cpu0) and 57th-64th cpus (cpu56-cpu63).
O conceito de uma máscara é explicado na wikipedia. Leia isso e depois volte. Vamos quebrar o primeiro exemplo da Red Hat. O número que é gravado como fc0 em hexadecimal é gravado como 111111000000 em binário. Digitalização da direita para a esquerda (ou seja, do bit menos significativo para o bit mais significativo ), existem seis zeros. Isso significa que a 1ª a 5ª CPUs (cpu0-cpu5) podem receber interrupções. Então, existem seis. Isso significa que as 7ª a 12ª CPUs (cpu6-cpu11) não receberão interrupções.
Parece que você deseja permitir que a cpu0 e a cpu1 recebam interrupções, mas evitam que interrupções sejam atribuídas à cpu2, cpu3, cpu4 e cpu5. Isso significa que você precisa de dois zeros e quatro ou 111100. Isso é 3C em hexadecimal. Então, você criaria / etc / default / irqbalance com o conteúdo
ENABLED="1"
ONESHOT="0"
IRQBALANCE_BANNED_CPUS="3f"
Para ver o que está acontecendo, tente
$ sudo service irqbalance stop
Stopping SMP IRQ Balancer: irqbalance.
$ source /etc/default/irqbalance
$ sudo irqbalance --debug