我必须永久更改中断的 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
.