系統壓測工具--Stress


一、stress簡介

stress是一款壓力測試工具,可以用它來對系統CPU,內存,以及磁盤IO生成負載

二、安裝

2.1、安裝

yum install -y stress

2.2、參數詳解

(py3) [root@jumpserver-168-182-149 ~]# 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 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)

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).


-? 顯示幫助信息
-v 顯示版本號
-q 不顯示運行信息
-n,--dry-run 顯示已經完成的指令執行情況
-t --timeout N 指定運行N秒后停止
  --backoff N 等待N微妙后開始運行
-c --cpu 產生n個進程 每個進程都反復不停的計算隨機數的平方根
-i --io  產生n個進程 每個進程反復調用sync(),sync()用於將內存上的內容寫到硬盤上
-m --vm n 產生n個進程,每個進程不斷調用內存分配malloc和內存釋放free函數
   --vm-bytes B 指定malloc時內存的字節數 (默認256MB)
   --vm-hang N 指示每個消耗內存的進程在分配到內存后轉入休眠狀態,與正常的無限分配和釋放內存的處理相反,這有利於模擬只有少量內存的機器
-d --hadd n 產生n個執行write和unlink函數的進程
 --hadd-bytes B 指定寫的字節數,默認是1GB --hadd-noclean 不要將寫入隨機ASCII數據的文件Unlink
    
【時間單位】可以為秒s,分m,小時h,天d,年y】;【文件大小單位】可以為K,M,G】

三、簡單使用

3.1、對CPU進行壓力測試

# 使用 stress -c N 會讓stress生成N個工作進程進行開方運算,以此對CPU產生負載。

# 比如你的CPU有四個核,那么可以運行

stress -c 4
(py3) [root@jumpserver-168-182-149 ~]# ps -elf |grep stress |grep -v grep
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD # 這行手動加上的 0 S root     106664  83958  0  80   0 -  1828 do_wai 21:55 pts/5    00:00:00 stress -c 4
1 R root     106665 106664 90  80   0 -  1828 -      21:55 pts/5    00:04:05 stress -c 4
1 R root     106666 106664 88  80   0 -  1828 -      21:55 pts/5    00:03:59 stress -c 4
1 R root     106667 106664 89  80   0 -  1828 -      21:55 pts/5    00:04:03 stress -c 4
1 R root     106668 106664 90  80   0 -  1828 -      21:55 pts/5    00:04:05 stress -c 4

F :代表這個程序的旗標 (flag), 4 代表使用者為 super user
S :代表這個程序的狀態 (STAT),D=不可中斷的睡眠狀態、R=運行、S=睡眠、T=跟蹤/停止、Z=僵屍進程;
UID: 程序被該 UID 所擁有
PID:process ID的縮寫,也就進程號
PPID :process parent ID,父進程ID
C: CPU 使用的資源百分比
PRI :這個是 Priority (優先執行序) 的縮寫
NI :這個是 Nice 值
ADDR: 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"
SZ :使用掉的內存大小
WCHAN: 目前這個程序是否正在運作當中,若為 - 表示正在運作
TTY: 登入者的終端機位置
TIME: 使用掉的 CPU 時間。
CMD:所下達的指令名稱

你會發現一共有5個stress進程,其中有4個進程是 17738 進程派生出來的工作進程。而且每個工作進程占用的CPU利用率都接近100%

3.2、對內存進行壓力測試

# 類似的,使用 stress -m N 會讓stress生成N個工作進程來占用內存。每個進程默認占用256M內存,但可以通過 --vm-bytes 來進行設置。

例如

stress -m 3 --vm-bytes 300M

# 會生成3個進程,每個進程占用300M內存

(py3) [root@jumpserver-168-182-149 ~]# ps -elf |grep stress |grep -v grep
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD # 這行手動加上的 0 S root      33076  83958  0  80   0 -  1828 do_wai 22:13 pts/5    00:00:00 stress -m 3 --vm-bytes 300M
1 R root      33077  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:21 stress -m 3 --vm-bytes 300M
1 R root      33078  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:22 stress -m 3 --vm-bytes 300M
1 R root      33079  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:21 stress -m 3 --vm-bytes 300M
而且你會發現,雖然只是對內存進行壓力測試,但實際上CPU也是很繁忙的,占有率也接近100%
3.3、對磁盤進行壓力測試

# 對磁盤壓力測試有兩個參數:

stress -i N 會產生N個進程,每個進程反復調用sync()將內存上的內容寫到硬盤上.

stress -d N 會產生N個進程,每個進程往當前目錄中寫入固定大小的臨時文件,然后執行unlink操作刪除該臨時文件。 臨時文件的大小默認為1G,但可以通過 --hdd-bytes 設置臨時文件的大小

例如

stress -i 2 -d 4 

你會發現壓力測試時,當前目錄所在可用空間少了4G

 3.4、設置超時時間

# 通過 -t TIMEOUT 可以讓stress只運行一段時間后自動退出。

例如:

# 10s停止
stress -c 4 -m 2 -d 1 -t 10s
# 1分鍾停止
stress -c 4 -m 2 -d 1 -t 10s

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM