Tornando um IRQ SMP Afinidade muda permanente

6

Eu tenho que mudar a smp_affinity de uma interrupção permanentemente. O código a seguir precisa ser executado quando o servidor for reinicializado:

echo "1" > /proc/irq/152/smp_affinity_list
echo "2" > /proc/irq/151/smp_affinity_list
echo "3" > /proc/irq/150/smp_affinity_list
echo "4" > /proc/irq/149/smp_affinity_list
echo "5" > /proc/irq/148/smp_affinity_list
echo "6" > /proc/irq/147/smp_affinity_list
echo "7" > /proc/irq/146/smp_affinity_list
echo "8" > /proc/irq/145/smp_affinity_list
echo "9" > /proc/irq/144/smp_affinity_list
echo "10" > /proc/irq/143/smp_affinity_list
echo "11" > /proc/irq/142/smp_affinity_list
echo "12" > /proc/irq/141/smp_affinity_list
echo "13" > /proc/irq/140/smp_affinity_list
echo "14" > /proc/irq/139/smp_affinity_list
echo "15" > /proc/irq/138/smp_affinity_list
echo "16" > /proc/irq/137/smp_affinity_list

Eu adicionei essas linhas ao arquivo /etc/rc.local, mas as alterações não são aplicadas ao sistema. Eu também adicionei echo "test" > / root / test que é executado corretamente, então o arquivo rc.local é executado. O sistema está executando o Debian 6.0.

    
por Philip 22.03.2013 / 17:15

3 respostas

1

O script rc.local deve ser o último executado na inicialização. Vamos supor que ele não esteja rodando como o último no seu sistema, então ele pode rodar muito cedo, antes que /proc seja montado. Ou pode ser um problema no seu kernel modular se o smp_affinity_list for gerenciado por um módulo do kernel ainda não carregado quando rc.local for executado.

Portanto, apenas altere seu rc.local e verifique a existência de /proc/irq/*/smp_affinity_list antes de entrar nele. Caso contrário, sleep por algum tempo, tente novamente e, eventualmente, emita uma mensagem de erro através do comando logger , para que você possa lê-lo em /var/log/syslog .

    
por 22.05.2013 / 15:05
1

Você pode ter o carregamento do serviço irqbalance durante a inicialização, o que redefiniria qualquer coisa que estivesse sendo executada na inicialização. Este artigo explica como parar o irqbalance serviço:

service --status-all
chkconfig --list | grep '3:on'
chkconfig irqbalance off
service irqbalance stop

E, em seguida, remova-o do nível de execução de inicialização para que ele não seja reiniciado na inicialização:

update-rc.d -f irqbalance remove <-- removes from boot process
    
por 10.12.2013 / 00:13
0

Eu tive o mesmo problema. Você precisa:

1) Crie a versão mais recente de irqbalance . Versões antigas (até o Ubuntu 15.10!) Apresentam bugs e ignoram a opção --banirq .

2) Edite /etc/default/irqbalance ou /etc/init/irqbalance.conf para adicionar --banirq=<num> .

3) Adicione suas substituições a /etc/rc.local .

    
por 10.11.2015 / 01:14