[Linux] 在 CentOS 上使用 stress 模擬系統資源吃緊的狀況 (CPU/記憶體/磁碟 I/O)

[Linux] 在 CentOS 上使用 stress 模擬系統資源吃緊的狀況 (CPU/記憶體/磁碟 I/O)

最近想要在 CentOS 上製造系統忙碌的狀況,看看能不能重現某個奇怪的 bug,

查了一下不少人建議可以用 stress 這個套件,

但是這個套件在 CentOS 7 裡面怎麼找都找不到,base / epel 都找遍了,

後來查到說這個套件目前是沒有擺在 CentOS 7 裡面的…

 

但我們還是可以手動下載安裝~

到 http://pkgs.repoforge.org/stress/ 這邊可以找到適用各平台的 stress RPM,

像我選的是給 CentOS 7 用的 el7 版本,用 yum 直接安裝:

sudo yum install http://pkgs.repoforge.org/stress/stress-1.0.2-1.el7.rf.x86_64.rpm

 

裝好後,執行 stress 就可以看到使用說明了,下面也很好心的附上一個使用範例:

root@localhost / # stress
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help         show this help statement
--version      show version statement
-v, --verbose      be verbose
-q, --quiet        be quiet
-n, --dry-run      show what would have been done
-t, --timeout N    timeout after N seconds
--backoff N    wait factor of N microseconds before work starts
-c, --cpu N        spawn N workers spinning on sqrt()
-i, --io N         spawn N workers spinning on sync()
-m, --vm N         spawn N workers spinning on malloc()/free()
--vm-bytes B   malloc B bytes per vm worker (default is 256MB)
--vm-stride B  touch a byte every B bytes (default is 4096)
--vm-hang N    sleep N secs before free (default is none, 0 is inf)
--vm-keep      redirty memory instead of freeing and reallocating
-d, --hdd N        spawn N workers spinning on write()/unlink()
--hdd-bytes B  write B bytes per hdd worker (default is 1GB)
--hdd-noclean  do not unlink files created by hdd workers
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).

 

像我想要製造的是記憶體不足,產生大量 PAGE SCAN 的狀況,

因此可以用 –vm 加上 –vm-bytes 來吃掉大量的記憶體,

但到底要產生幾個 worker、每個 worker 要吃掉多少記憶體,還是跟測試的情境有關,得自己調整才行~

像我是產生 5 個 worker 來各別吃掉 1G 記憶體 (也就是一共吃掉 5G):

stress --vm 5 --vm-bytes 1G

 

執行之後,atop 立刻看到 MEM 記憶體部分出現很大的壓力,

PAG 這邊也顯示了大量的 PAGE SCAN 產生,表示系統正在掃瞄可以被放到 swap 的記憶體分頁,

這 swap 的動作也導致硬碟的 I/O 量大增,一整個紅色啊:

Screen Shot 2016-07-04 at 6.16.10 PM   

 

感覺 stress 是個不錯用的工具,可以用來模擬系統遇到資源吃緊的狀況,

看看自己的程式是不是還能盡量正常的運作 (或是在資源充足時,回復正常的運作) 囉~

 

參考資料:

superuser: How can I produce high CPU load on a Linux server?

“No package stress available, nothing to do”,”bash: yum-config-manager:command not found

 

(本頁面已被瀏覽過 1,166 次)

發表迴響

你的電子郵件位址並不會被公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料