使 IRQ SMP 关联性更改永久化

使 IRQ SMP 关联性更改永久化

我必须永久更改中断的 smp_affinity 。服务器重启时需要执行以下代码:

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

我已将这些行添加到 /etc/rc.local 文件中,但更改不会应用于系统。我还添加了 echo "test" > /root/test ,它可以正确执行,因此 rc.local 文件可以得到执行。系统运行的是Debian 6.0。

答案1

rc.local脚本应该是启动时最后执行的。假设它没有在系统中最后运行,那么它可能运行得太早,/proc甚至在安装之前。或者,如果由内核模块管理的内核模块在运行smp_affinity_list时仍未加载,则可能是模块化内核上的问题。rc.local

因此,只需更改您的并在回显之前rc.local检查是否存在。/proc/irq/*/smp_affinity_list否则sleep一段时间后重试,最终通过logger命令发出错误消息,以便您能够在/var/log/syslog.

答案2

您可能在启动期间加载了 irqbalance 服务,这会重置您在启动时运行的任何内容。本文解释如何停止irqbalance服务:

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

然后将其从启动运行级别中删除,这样它就不会在启动时重新启动:

update-rc.d -f irqbalance remove <-- removes from boot process

答案3

我有同样的问题。你需要:

1) 构建最新版本的irqbalance.旧版本(直到 Ubuntu 15.10!)存在错误,请忽略该--banirq选项。

2)编辑/etc/default/irqbalance/etc/init/irqbalance.conf添加--banirq=<num>

3) 将您的覆盖添加到/etc/rc.local.

相关内容