2023年5月9日星期二

Linux底下,一個控制CPU Loading的 Open Source tool,cpulimit (Tool使用方式)

 此篇直接介紹 cpulimit 該如何使用,讓我們做stress-test 可以直接指定想要的CPU Loading

先假設我們的設備為 雙核心(dual-core)的device

我們先撰寫一個loop的shell script,這個script可以把一個CPU使用率,占用到100%
====== loop_1.sh ======
#!/bin/sh

while [ 1 ]
do
    echo 5566 > /dev/null
done
====================

上面這個簡單的小程式,就可以占用100%的一個CPU使用率
所以如果是雙核心的device,很簡單,我們就再搞一個loop script

====== loop_2.sh ======
#!/bin/sh

while [ 1 ]
do
    echo 5566 > /dev/null
done
====================


接著我們再去撰寫一個主要的shell script,可以帶起 loop_1.sh 與 loop_2.sh
並且會去使用 cpulimit 去限制這兩個 loop程式的 cpu 使用率
進而達到我們想要維持的 CPU 使用率

====== cpuload.sh =======
#!/bin/sh

if [ "$#" -lt "1" ]; then
    echo "ex: ./cpuload.sh 40 (limit at 40%)"
    exit
fi

VAL=$1

killall loop_1.sh loop_2.sh

./loop_1.sh &
L1=`ps | grep loop_1.sh | awk -F ' ' '{print $1}'`     #get pid
./loop_2.sh &
L2=`ps | grep loop_2.sh | awk -F ' ' '{print $1}'`     #get pid

./cpulimit --limit=$VAL --pid=$L1 &
./cpulimit --limit=$VAL --pid=$L2 &

=======================

Linux底下,一個控制CPU Loading的 Open Source tool,cpulimit (Cross-compile)

 今天要跟大家介紹一個好用的工具,可以限制某一個Process只允許他使用多少的CPU Loading
 另外,如果要做壓力測試(stress test),只要稍微再搭配一些自己撰寫的shell script
 可以達到自行指定壓力測試所要的cpu loading

 先介紹這個open source,名為 "cpulimit",source code link如下:
 https://github.com/opsengine/cpulimit

 如果要在你的平台上,作壓力測試,請先自行做 Cross Compile,這邊先簡單教你如何編譯出你平台可以使用的tool

 我們可以看到此opensouce的目錄結構如下圖:

 










Step1:

在你下載好的source code,如上圖的路徑底下,先指定好你的CC環境變數
ex: 我要編譯電腦x86 用的tool,我的Toolchain就會是 /usr/bin/gcc,於是我用以下方式指定CC
=>   export CC=/usr/bin/gcc

Step2:

執行make,就可以成功編譯出我們要的工具,"cpulimit"
(如果要重新編譯,記得先make clean)







Step3:

編譯出來的執行程式,會在cpulimit-master/src/ 路徑底下,如下圖:




Step4:

執行cpulimit,可以看到使用方式,如下圖:
我們主要會用到 limit 與 pid 這兩個參數







下一篇文章,再來繼續介紹,怎麼加一些shell script,來做到壓力測試!

2023年5月5日星期五

[shell script] script如何做小數點運算,實際範例

 今天要記錄一個小數點運算的 shell script 範例

我們要把12去除以10,然後要得到值1.2,實際範例如下:


########## Floating point operation #############

#!/bin/sh

VAL=12
VAL=`echo | awk "{print $VAL/10}"`

echo "VAL=$VAL"


結果:




使用 lsblk 印出 emmc 每個 partition的"名字"與"size"

使用以下的command可以印出 eMMC的 partition資訊 lsblk --bytes --output name,partlabel,size   參數說明 --bytes: partition的大小,以byte的方式輸出 --output: 後面可以指定要輸出的內容...