lvs 網絡卡多佇列

2021-08-01 16:53:21 字數 1540 閱讀 9357

#!/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...