[效能優化]通過Shell實現將程序負載均衡到CPU多核
阿新 • • 發佈:2018-12-29
有時候,由於架構設計或其他業務本身特點原因,導致有些應用使用CPU很不均衡,所以業務處理集中在一個CPU上,而其它CPU閒得在睡覺。這裡有個簡單的優化方案實現將各個執行緒繫結到到多個CPU,從而實現效能的提高。
雖然CPU是一個不錯的思路,但是不是殺手鐗,其效能能提高多少依賴於各個執行緒的效能分佈是否均勻;所以最好的辦法是優化你的程式架構。
在這裡分享一個Shell指令碼(指令碼名為bindcpu2p.sh),通過該指令碼可將該程序均勻負載到各個CPU上。
[code lang=”shell”] #!/bin/sh
pids=`/sbin/pidof $1`
cpunum=`cat /proc/cpuinfo | grep processor | wc -l`
cpuidx=0
for pid in $pids
do
/usr/bin/taskset -cp ${cpuidx} ${pid}
cpuidx=$(($cpuidx+1))
cpuidx=$(($cpuidx%$cpunum))
echo $cpuidx
done[/code]
使用方法 $> ./bindcpu2p.sh progressname
注:請兄弟們檢視下程式碼,能幫忙除錯下就最好不過了。