性能调优 / 命令文档
Linux硬中断处理
概述
运维工程师必备技能
实战导向 | 高性能优化
硬中断基础概念
硬中断(Hardware Interrupt)是硬件设备向CPU发送的信号,用于通知CPU需要处理某些紧急事件。
关键特点:优先级高、不可被屏蔽、实时处理
常见硬中断类型:
网络中断:网卡接收/发送数据包
磁盘中断:硬盘读写完成
定时器中断:系统时钟信号
键盘/鼠标中断:用户输入事件
硬中断诊断工具
cat /proc/interrupts
显示系统中所有中断的统计信息
watch -n 1 'cat /proc/interrupts'
每秒刷新中断信息,观察变化趋势
sar -I ALL 1 5
详细显示中断活动情况
中断亲和性设置
# 查看中断绑定的CPU cat /proc/irq/24/smp_affinity # 将中断绑定到特定CPU echo 2 > /proc/irq/24/smp_affinity
IRQ Balance优化
# 停用自动中断平衡 systemctl stop irqbalance # 手动设置网卡中断分布 ./set_irq_affinity.sh eth0
NAPI机制调优
# 调整网络中断合并参数 ethtool -C eth0 rx-usecs 50 rx-frames 32 # 查看当前设置 ethtool -c eth0
CPU0
网络中断专用
CPU1-3
应用程序处理
负载均衡
避免热点CPU
%hi
硬中断CPU使用率正常: < 5%
%si
软中断CPU使用率正常: < 10%
INT/sec
每秒中断次数网卡: < 50k
Context Switches
上下文切换正常: < 10k/s
监控命令组合
# 综合性能监控 top # 查看各CPU核心使用情况 iostat -x 1 # 磁盘I/O监控 netstat -i # 网络接口统计 vmstat 1 # 系统整体性能
内核参数调优
# /etc/sysctl.conf 优化配置 net.core.netdev_max_backlog = 5000 net.core.netdev_budget = 600 kernel.sched_migration_cost_ns = 5000000 # 应用配置 sysctl -p
高级技巧
使用isolcpus参数将特定CPU核心专门用于处理中断
GRUB_CMDLINE_LINUX="isolcpus=1,2,3"
接收包转向,将网络处理分散到多个CPU
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
用户态网络驱动,绕过内核网络栈
./dpdk-setup.sh --bind=igb_uio eth0
关键警告
生产环境慎重:所有优化都需要在测试环境验证
备份配置:修改前备份原始配置文件
渐进调整:一次只调整一个参数,观察效果
监控先行:建立完善的监控体系
安全检查清单
确认网卡、CPU支持相关特性
准备快速恢复原始配置的方案
记录优化前后的详细性能数据
最佳实践:先观察,再分析,后优化,持续监控