1. 程式人生 > >[效能優化]通過Shell實現將程序負載均衡到CPU多核

[效能優化]通過Shell實現將程序負載均衡到CPU多核

有時候,由於架構設計或其他業務本身特點原因,導致有些應用使用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

注:請兄弟們檢視下程式碼,能幫忙除錯下就最好不過了。