#!/bin/bash
# 平均繫結cpu到網絡卡多個佇列上,避免單核cpu跑滿的問題
# ipmi cpu高
[ -f /sys/module/ipmi_si/parameters/kipmid_max_busy_us ] && echo 10 >/sys/module/ipmi_si/parameters/kipmid_max_busy_us
## cpu
# 平均繫結cpu到網絡卡多個佇列上,避免單核cpu跑滿的問題
set_affinity()
,$"done
let "vec -= 32 * $idx"
mask_tmp=$((1<<$vec))
mask=`printf "%x%s" $mask_tmp $mask_fill`
else
mask_tmp=$((1<<$vec))
mask=`printf "%x" $mask_tmp`
fiprintf "%s mask=%s for /proc/irq/%d/smp_affinity\n" $dev $mask $irq
printf "%s" $mask > /proc/irq/$irq/smp_affinity
}if ( service irqbalance status &>/dev/null ); then
service irqbalance stop
chkconfig irqbalance off
fi# set up the desired devices.
for dev in `ifconfig | awk '$0~/^(eth|em)[0-9] /'`; do
for dir in rx tx txrx; do
max=`grep $dev-$dir /proc/interrupts | wc -l`
if [ "$max" == "0" ] ; then
max=`egrep -i "$dev:.*$dir" /proc/interrupts | wc -l`
fiif [ "$max" == "0" ] ; then
echo no $dir vectors found on $dev
continue
fifor vec in `seq 0 1 $max`; do
irq=`cat /proc/interrupts | grep -i $dev-$dir-$vec"$" | cut -d: -f1 | sed "s/ //g"`
if [ -n "$irq" ]; then
set_affinity
else
irq=`cat /proc/interrupts | egrep -i $dev:v$vec-$dir"$" | cut -d: -f1 | sed "s/ //g"`
if [ -n "$irq" ]; then
set_affinity
fifi
done
done
echo ""
echo 搞定! top看下是否平衡?
done
網絡卡多佇列
多佇列指例項規格支援的最大網絡卡佇列數。單個ecs例項vcpu處理網路中斷存在效能瓶頸時,您可以將例項中的網路中斷分散給不同的cpu處理。經測試,在相同的網路pps和網路頻寬的條件下,與1個佇列相比,2個佇列最多可提公升效能達50 到100 4個佇列的效能提公升更大。如果您使用的映象已預設開啟網絡卡...
網絡卡多佇列學習小結
1.網絡卡多佇列 網絡卡多佇列是需要多佇列網絡卡支援的。所謂網絡卡多佇列是網絡卡硬體支援的。1 開啟軟體多佇列的方法 2 檢視軟體多佇列開啟的效果 cat proc interrupts grep eth0 cat proc interrupts grep eth0 2.設定irq affinity...
Linux網路協議棧 多佇列網絡卡原理
背景 近日因公司大促,mysql從伺服器前端共享的一台lvs因流量跑到2gps 而出現 lvs丟包,client端 不停丟擲mysql connect failed異常.故障特徵 大流量時為lvs的cpu其中乙個core使用率100 其他23個core使用率小於10 明顯地 根本原因 lvs使用li...