stress是一個linux下的壓力測試工具,專門為那些想要測試自己的系統,完全高負荷和監督這些設備運行的用戶。
1. stress1.0.4下載地址
下載:https://fossies.org/linux/privat/stress-1.0.4.tar.gz
2.安裝stress
將下載的stress-1.0.4.tar.gz復制到“/usr/local/src/”目錄下
#切換目錄 cd /usr/local/src #解壓tar.gz包 tar -xzpvf stress-1.0.4.tar.gz #進入解壓目錄 cd stress-1.0.4 #開始安裝 ./configure make make check make install make clean
3.stress使用說明
Stress 選項說明: -? --help #顯示幫助信息 ---------------------------------------------- --version #顯示軟件版本信息 ---------------------------------------------- -v --verbose #顯示詳細運行信息 ---------------------------------------------- -q --quiet #不顯示運行信息 ---------------------------------------------- -n --dry-run #顯示已經完成的指令執行情況 ---------------------------------------------- -t secs --timeout secs #指定運行多少秒 ---------------------------------------------- --backoff usecs #等待usecs微秒后才開始執行 ---------------------------------------------- -c forks --cpu forks #產生多個處理sqrt()函數的CPU進程 ---------------------------------------------- -i forks --io forks #產生多個處理sync()函數的磁盤I/O進程 ---------------------------------------------- -m forks --vm forks #產生多個處理malloc()內存分配函數的進程 ---------------------------------------------- --vm-bytes bytes #指定內存的Bytes數,默認值是1(與--vm-hang配合使用) ---------------------------------------------- --vm-hang #指示每個消耗內存的進程在分配到內存后轉入休眠狀態,與正常的無限分配和釋放內存的處理相反,這有利於模擬只有少量內存的機器;例如,下面命令運行時就會分配到並一直持有256M內存,直到進程被終止; % stress --vm 2 --vm-bytes 128M --vm-hang ---------------------------------------------- -d forks --hdd forks #產生多個執行write()函數的進程 ---------------------------------------------- --hdd-bytes bytes #指定寫的Bytes數,默認是1GB ---------------------------------------------- --hdd-noclean #不要將寫入隨機ASCII數據的文件Unlink 注意:時間單位可以為秒s,分m,小時h,天d,年y,文件大小單位可以為K,M,G 示例: 一個簡單的例子就是你只想給系統一個隨機負載,此命令產生13個進程,每個進程都反復不停的計算由rand()產生隨機數的平方根 ---------------------------------------------- % stress -c 13 #Stress支持很多選項,可以指定僅顯示有限的運行信息,以下命令產生1024個進程,僅顯示出錯信息 ---------------------------------------------- % stress --quiet --cpu 1k #為了觀察系統何時達到I/O極限,可以使用選項“-i”,以下指令產生4個進程,每個進程反復調用sync(),sync()用於將內存上的內容寫到硬盤上 ---------------------------------------------- % stress -i 4 #可以在一條指令中使用多個消耗資源的選項,如下指令表示顯示運行信息,一分鍾后終止運行(13個CPU進程,4個I/O進程) ---------------------------------------------- % stress -c 13 -i 4 --verbose --timeout 1m #你也可以指定向磁盤中寫入固定大小的文件,這個文件通過調用mkstemp()產生並保存在當前目錄下,默認是文件產生后就被執行unlink(清除)操作,但是你可以使用“--hdd-bytes”選項將產生的文件全部保存在當前目錄下,這會將你的磁盤空間逐步耗盡 ---------------------------------------------- % stress -d 1 --hdd-noclean --hdd-bytes 13 #可以支持生成大文件 % stress -d 1 --hdd-noclean --hdd-bytes 3G ----------------------------------------------
4.測試方式
建議開啟三個 Xshell連接終端。
第一個終端:
測試一
運行 stress 命令,模擬一個 CPU 使用率 100%,運行10分鍾的場景
#一個cpu使用率100%,運行10分鍾場景 stress --cpu 1 --timeout 600
測試二
主要測試硬盤,生成文件放到硬盤內
#var下創建測試目錄 mkdir -p /var/test #切換到test目錄 cd /var/test #測試硬盤,生成800k大小的文件,寫到硬盤內 stress -d 1 --hdd-noclean --hdd-bytes 800k
測試三
提升cpu與cpu使用率的測試 ,生成文件放到硬盤內
#還是切換到 /var/test/ 測試目錄下,沒有的新建一個 cd /var/test #增大“c”值提高cpu數;增大“i”值提高CPU的使用率;增大“d”值會減少CPU的使用率,從而增加對硬盤的數據寫入量,但是對內存要求不高 stress -c 4 -i 4 -d 1 --hdd-noclean --hdd-bytes 800k
測試四
提升vm值,測試內存使用率,生成文件放到硬盤內
#還是切換到 /var/test/ 測試目錄下,沒有的新建一個 cd /var/test #增大“vm”、“--vm-bytes” 或 “—vm-hang” 選項的值都會提高內存的使用率 stress -c 1 -i 1 --vm 6 --vm-bytes 128M -d 2 --hdd-noclean --hdd-bytes 800k #注意: #運行過程中,您可以通過進入其他終端,執行“df”命令,查看磁盤是否已滿(也就是/var/test是否已滿),如果磁盤已滿,則程序“stress”會報錯並終止。 #如果報錯終止執行以下操作,清空測試目錄,如果有需要;進入到測試目錄下(/var/test或者別的目錄),繼續運行“stress”進行測試 #給/var/test賦權限 chmod -R 755 /var/test #清空目錄 rm -R -f /var/test/ #切換目錄 cd /var/test/ #接着測試(vm-bytes可以下降點繼續測試) stress -c 1 -i 1 --vm 6 --vm-bytes 128M -d 2 --hdd-noclean --hdd-bytes 800k
第二個終端:
運行 uptime 查看平均負載的變化情況
#查看平均負載變化 uptime
查看動態平均負載情況命令如下:
#動態平均負載情況 watch -d uptime
第三個終端:
mpstat命令監控cpu
運行 mpstat 查看 CPU 使用率的變化情況
#查看cpu使用率的變化情況
mpstat
監控所有cpu,每隔一段時間輸出一組數據
#監控所有 CPU,后面數字 5 表示間隔 5 秒后輸出一組數據 mpstat -P ALL 5
pidstat命令監控cpu
pidstat是sysstat工具的一個命令,用於監控全部或指定進程的cpu、內存、線程、設備IO等系統資源的占用情況。
#pidstat 的用法: pidstat [ 選項 ] [ <時間間隔> ] [ <次數> ]
常用的參數:
- -u:默認的參數,顯示各個進程的cpu使用統計
- -r:顯示各個進程的內存使用統計
- -d:顯示各個進程的IO使用情況
- -p:指定進程號
- -w:顯示每個進程的上下文切換情況
- -t:顯示選擇任務的線程的統計信息外的額外信息
- -T { TASK | CHILD | ALL }
這個選項指定了pidstat監控的。TASK表示報告獨立的task,CHILD關鍵字表示報告進程下所有線程統計信息。ALL表示報告獨立的task和task下面的所有線程。
注意:task和子線程的全局的統計信息和pidstat選項無關。這些統計信息不會對應到當前的統計間隔,這些統計信息只有在子線程kill或者完成的時候才會被收集。 - -V:版本號
- -h:在一行上顯示了所有活動,這樣其他程序可以容易解析。
- -I:在SMP環境,表示任務的CPU使用率/內核數量
- -l:顯示命令名和所有參數
查看所有CPU使用情況
#查看所有進程的 CPU 使用情況( -u -p ALL) #pidstat 和 pidstat -u -p ALL 是等效的。 #pidstat 默認顯示了所有進程的cpu使用率。 pidstat 或 pidstat -u -p ALL
5秒查詢一次,共查詢一次,所有cpu使用情況
#設置5秒間隔,共查詢1次 pidstat 5 1
5.卸載stress方式
如果不想保留在服務器內,可以通過如下方式卸載
#卸載命令 rm -R -f /usr/local/src/stress-0.18.1/ rm -f /usr/local/bin/stress rm -f /usr/local/src/stress-0[1].18.1.tar.gz
6.保存監測數據
可以查看我的另一篇文章:Linux:監測收集linux服務器性能數據工具Sysstat的使用與安裝
文章整合至:https://blog.csdn.net/cojn52/article/details/89680093、https://www.cnblogs.com/wx170119/p/11411312.html