使用 Bash 脚本绑定 IRQ 到指定 CPU
本文最后更新于:2024年10月23日 晚上
使用 Bash 脚本绑定 IRQ 到指定 CPU
在现代操作系统中,合理地管理中断请求(IRQ)可以显著提升系统性能。本文将介绍如何使用 Bash 脚本将特定的 IRQ 绑定到指定的 CPU,确保系统资源的高效利用。
脚本概述
这个 Bash 脚本的功能是检查输入的 IRQ 号和 CPU 号,验证 IRQ 是否存在,并设置其 smp_affinity
,以便将该中断分配给特定的 CPU。
脚本实现
参数检查:首先,脚本检查输入参数的数量是否正确,确保用户输入了 IRQ 和 CPU 的有效值。
1
2
3
4if [ "$#" -ne 2 ]; then
echo "Usage: $0 <IRQ_NUMBER> <CPU_NUMBER>"
exit 1
fi验证 IRQ 号:接下来,脚本检查
/proc/irq/<IRQ_NUMBER>
目录是否存在,以确认指定的 IRQ 是否有效。如果无效,脚本会列出所有可用的 IRQ 号。1
2
3
4
5if [ ! -d "/proc/irq/$IRQ_NUMBER" ]; then
echo "IRQ $IRQ_NUMBER does not exist. Available IRQs are:"
cat /proc/interrupts | awk '{print $1}' | sed 's/://g' | grep -E '^[0-9]+$'
exit 1
fi设置 CPU 掩码:通过计算 CPU 掩码,脚本可以将 IRQ 绑定到指定的 CPU。此处使用位运算将中断分配给指定的 CPU。
1
AFFINITY_MASK=$(printf "%x" $((1 << CPU_NUMBER)))
应用和验证设置:将计算出的掩码写入
/proc/irq/$IRQ_NUMBER/smp_affinity
文件,脚本随后验证设置是否成功。1
2
3echo $AFFINITY_MASK > "/proc/irq/$IRQ_NUMBER/smp_affinity"
CURRENT_AFFINITY=$(cat /proc/irq/$IRQ_NUMBER/smp_affinity)
echo "Current affinity for IRQ $IRQ_NUMBER: $CURRENT_AFFINITY"
使用示例
要使用这个脚本,只需执行以下命令:
1 |
|
例如,如果你想将 IRQ 24 绑定到 CPU 2,可以运行:
1 |
|
完整代码
1 |
|
总结
通过这个简单的 Bash 脚本,你可以轻松地将 IRQ 绑定到指定的 CPU,从而提高系统性能。有效的 IRQ 管理对于多核系统尤为重要,可以帮助减少中断处理的延迟和提高响应速度。希望这篇博客能帮助你更好地理解和管理中断请求!
使用 Bash 脚本绑定 IRQ 到指定 CPU
https://jinbilianshao.github.io/2024/10/23/使用-Bash-脚本绑定-IRQ-到指定-CPU/