Linux stress命令詳解

      網友投稿 1899 2022-05-28

      stress 命令主要用來模擬系統負載較高時的場景,本文介紹其基本用法。文中 demo 的演示環境為 ubuntu 18.04。

      1 安裝 stress

      Ubuntu 系統默認沒有安裝 stress,需要通過下面的命令安裝:

      $ sudo apt install stress $ stress --version

      1

      2

      2 語法

      stress

      1

      3 可選參數

      -c, --cpu N 產生 N 個進程,每個進程都反復不停的計算隨機數的平方根

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

      -m, --vm N 產生 N 個進程,每個進程不斷分配和釋放內存

      –vm-bytes B 指定分配內存的大小

      Linux stress命令詳解

      –vm-stride B 不斷的給部分內存賦值,讓 COW(Copy On Write)發生

      –vm-hang N 指示每個消耗內存的進程在分配到內存后轉入睡眠狀態 N 秒,然后釋放內存,一直重復執行這個過程

      –vm-keep 一直占用內存,區別于不斷的釋放和重新分配(默認是不斷釋放并重新分配內存)

      -d, --hadd N 產生 N 個不斷執行 write 和 unlink 函數的進程(創建文件,寫入內容,刪除文件)

      –hadd-bytes B 指定文件大小

      -t, --timeout N 在 N 秒后結束程序

      –backoff N 等待N微妙后開始運行

      -q, --quiet 程序在運行的過程中不輸出信息

      -n, --dry-run 輸出程序會做什么而并不實際執行相關的操作

      –version 顯示版本號

      -v, --verbose 顯示詳細的信息

      4 消耗 CPU 資源

      stress 消耗 CPU 資源是通過調用 sqrt 函數計算由 rand 函數產生的隨機數的平方根實現。下面的命令會產生 4 個這樣的進程不斷計算:

      $ stress -c 4

      1

      使用 top 命令查看 CPU 的狀態如下(CPU 在用戶態滿負荷運轉):

      消耗內存資源

      下面的命令產生兩個子進程,每個進程分配 300M 內存:

      $ stress --vm 2 --vm-bytes 300M --vm-keep

      1

      父進程處于睡眠狀態,兩個子進程負責資源消耗。

      –vm-keep

      一直占用內存,區別于不斷的釋放和重新分配(默認是不斷釋放并重新分配內存)。

      –vm-hang N

      指示每個消耗內存的進程在分配到內存后轉入睡眠狀態 N 秒,然后釋放內存,一直重復執行這個過程。

      –vm-keep 和 --vm-hang 都可以用來模擬只有少量內存的機器,但是指定它們時 CPU 的使用情況是不一樣的。

      $ stress --vm 2 --vm-bytes 500M --vm-keep

      一直在進行默認的 stride 操作,user 非常高(cpu 在用戶態忙碌)。

      $ stress --vm 2 --vm-bytes 500M --vm-hang 5

      上面這兩種狀態不斷切換,但整體上看 CPU 的負載并不高。

      –vm-stride B

      不斷的給部分內存賦值,讓 COW(Copy On Write)發生。只要指定了內存相關的選項,這個操作就會執行,只是大小為默認的 4096。賦值內存的比例由參數決定:

      for (i = 0; i < bytes; i += stride)

      ptr[i] = ‘Z’; /* Ensure that COW happens. */

      bytes 為消耗的總內存大小,stride 為間隔。

      該參數會影響 CPU 狀態 us 和 sy:

      $ stress --vm 2 --vm-bytes 500M --vm-stride 64

      $ stress --vm 2 --vm-bytes 500M --vm-stride 1M

      為什么會產生這樣的結果?原因是單獨的賦值和對比操作可以讓 CPU 在用戶態的負載占到 99% 以上。–vm-stride 值增大就意味著減少賦值和對比操作,這樣就增加了內存的釋放和分配次數(cpu在內核空間的負載)。

      不指定 --vm-stride 選項就使用默認值是 4096,CPU 負載情況居于前兩者之間:

      $ stress --vm 2 --vm-bytes 500M

      消耗 IO 資源

      下面的命令產生 4 個進程,每個進程都反復調用 sync 函數將內存上的內容寫到硬盤上:

      $ stress -i 4

      使用 top 命令查看 CPU 的狀態如下:

      sy 升高,wa(iowait) 非常高。

      壓測磁盤及 IO

      下面的命令創建一個進程不斷的在磁盤上創建 10M 大小的文件并寫入內容:

      $ stress -d 1 --hdd-bytes 10M

      使用 top 命令查看 CPU 的狀態如下(此時的 CPU 主要消耗在內核態):

      下面是 iostat 2 的輸出(同樣是高 iowait,瓶頸是寫磁盤):

      其它選項

      –verbose

      顯示 stress 程序運行過程中的詳細信息:

      –timeout N

      在 N 秒后結束程序。

      –quiet

      stress 程序運行的過程中不輸出信息。

      -n, --dry-run

      輸出程序會做什么而并不實際執行相關的操作:

      –backoff N

      讓新 fork 出來的進程 sleep N 微秒再開始運行。

      除了單獨指定某一類的選項,還可以同時執行多個類型的任務,比如產生 3 個 CPU 進程、3 個 IO 進程、2 個10M 的 vm 進程,并且每個 vm 進程中不循環分配釋放內存:

      $ stress --cpu 3 --io 3 --vm 2 --vm-bytes 10M --vm-keep

      總結

      對于學習 linux 性能檢測相關的命令來說,stress 命令是個得力的助手。通過模擬各種高負載情況,可以幫助我們更好的理解系統瓶頸并掌握性能檢測工具的用法。

      參考

      https://www.cnblogs.com/sparkdev/p/10354947.html

      Linux 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【WAIC2021】一文Get華為云人工智能高峰論壇精華
      下一篇:Chrome您的連接不是私密連接,解決辦法
      相關文章
      亚洲综合久久1区2区3区| 国产亚洲精品久久久久秋霞| 亚洲乱码国产一区三区| 国产亚洲情侣久久精品| 国产精品无码亚洲精品2021| 亚洲国产欧美国产综合一区 | 亚洲一区二区三区无码国产| 久久久久久亚洲AV无码专区 | 久久久久久亚洲av无码蜜芽| 2020国产精品亚洲综合网| 亚洲人成网站日本片| 亚洲一级视频在线观看| 亚洲a级片在线观看| 亚洲一区二区三区高清不卡 | 亚洲s色大片在线观看| 无码专区—VA亚洲V天堂| 亚洲天天做日日做天天看| 亚洲精品亚洲人成在线麻豆| 亚洲欧洲另类春色校园小说| 亚洲国产av美女网站| 久久亚洲精品专区蓝色区| 中文字幕精品三区无码亚洲| 亚洲s码欧洲m码吹潮| 亚洲a∨无码一区二区| 亚洲国产成人精品女人久久久| 亚洲国产小视频精品久久久三级| 亚洲日本中文字幕天堂网| 夜夜春亚洲嫩草影院| 久久精品国产精品亚洲色婷婷| 亚洲网红精品大秀在线观看| 国产成人精品日本亚洲直接| 亚洲精品无码你懂的| 亚洲国产成人五月综合网 | 亚洲精品无码久久久| 亚洲人成伊人成综合网久久久| 亚洲国产另类久久久精品| 亚洲午夜久久影院| 亚洲免费闲人蜜桃| 亚洲av乱码一区二区三区按摩| 亚洲精品一级无码中文字幕| 亚洲精品亚洲人成在线观看|