网卡绑cpu的脚本
来源:互联网 发布:手机app淘宝怎么投诉 编辑:程序博客网 时间:2024/04/28 19:27
今天开始实践将网卡的中断绑定到特定处理器核,于是用到将二进制转换成十六进制的需求。
目标是将网卡的中断“均匀”绑定到特定的处理器核上去:
#网卡数组
net_dev=(`for dev in /sys/class/net/*/device ; do awk -F/ ‘{print $5}’ <<< ${dev} ; done`)
#激活网卡IRQ数组
net_irq=(`for i in ${net_dev[@]} ; do awk ‘/’${i}’-/{print $1}’ /proc/interrupts | sed ‘s/[: ]//g’ ; done`)
#激活网卡队列数
net_q=${#net_irq[@]}
#处理器核数
cpu_n=`grep -c processor /proc/cpuinfo`
#绑定法则
#中断号数组下标%处理器核数,求余,为CPU编号
for((i=0;i<net_q;i++)) ; do
irq=${net_irq[i]}
m=$((i % cpu_n))
cpu=`echo -n ’1′; for((n=0;n<m;n++)); do echo -n ’0′ ; done`
smp_affinity=`echo “obase=16;ibase=2; $cpu” | bc`
echo $smp_affinity > /proc/irq/$irq/smp_affinity
done
其中:
echo “obase=16;ibase=2; $cpu” | bc
是利用bc将二进制数转化成十六进制数。
当下的网卡大都已经支持多队列了。
多队列,网卡就可以把“中断”呼叫分派给不同的处理器,而不必以前那样,只有一个处理器在处理网络流量。
“多队列”需要网卡硬件以驱动程序两者配合才能发挥作用。升级内核到最新(发行版自带的),这很重要。
查看/proc/interrupts中是否包含多个eth0-,有几个就有几个队列。有几个队列,就可以同时“中断”几个CPU,相当于可以有几个“并发”处理。
irqbalance这个应用本来是好意,但是在网卡多队列的时候,这个东东还是关闭为好。然后将“中断”绑定到固定的CPU上,这样:
1. 可以提高CPU缓存的命中率(这个对速度的提高,效果很明显)。
2. 可以降低CPU互斥。
如何绑定,查看内核文档:filesystems/proc.txt、IRQ-affinity.txt
- 网卡绑cpu的脚本
- 自己写的绑Hosts脚本
- DPDK网卡绑定和解绑
- 获取CPU的编号和网卡地址
- CPU资源的shell脚本
- Android_Ok的解绑
- linux 查看网卡流量的shell脚本
- shell脚本获取网卡的实时流量
- linux 查看网卡流量的脚本
- linux查看网卡平均流量的脚本
- 一个监控网卡流量的shell脚本
- C#获取电脑硬盘,网卡,CPU的序列号
- C#得到CPU的序列号、硬盘序列号、网卡序列号
- snmp的设置 for cacti监视cpu和网卡
- PHP 获得计算机的唯一标识[CPU,网卡 MAC地址]
- C#获取电脑硬盘,网卡,CPU的序列号
- C# 获取CPU的编号和网卡地址
- 获取网卡、硬盘、CPU硬件信息 的类
- eclim安装
- 封装线程类的方法
- .Net中被忽视的方法
- 单片机串口通讯RXD与TXD如何对接详解
- SDL arm linux平台交叉编译(好文章已测试)
- 网卡绑cpu的脚本
- VIM中的global
- 上拉电阻在S3C2440A中的功能
- linux 中命令yum的用法
- 像这样玩C#
- rdesktop ,在 Unix/Linux 下远程访问 Windows(安装redesktop)
- NSUserDefaults读取和写入自定义对象
- Entity Framework 4.0新增对T-SQL的支持
- MySql 数据库还原,MySQL server has gone away