如何使用Stress-ng工具在 Linux 上施加高 CPU 負(fù)載和壓力測試
一、概述
在日常工作中,CPU壓力測試是一項(xiàng)常見的工作,主要用到如下場景:
- 微調(diào)系統(tǒng)上的活動(dòng)。
- 監(jiān)控操作系統(tǒng)內(nèi)核接口。
- 測試您的Linux 硬件組件,例如 CPU、內(nèi)存、磁盤設(shè)備和許多其他組件,以觀察它們在壓力下的性能。
- 測量系統(tǒng)上不同的功耗負(fù)載。
今天介紹兩個(gè)重要的工具:stress和stress-ng,用于在您的 Linux 系統(tǒng)下進(jìn)行壓力測試。
1、stress– 是一種工作負(fù)載生成器工具,旨在讓您的系統(tǒng)承受 CPU、內(nèi)存、I/O 和磁盤壓力的可配置測量。
2、stress -ng – 是壓力工作負(fù)載生成器工具的更新版本,可測試您的系統(tǒng)的以下功能:
- CPU 計(jì)算
- 驅(qū)動(dòng)壓力
- I/O 同步
- 管道 I/O
- 緩存抖動(dòng)
- 虛擬機(jī)壓力
- socket壓力
- 進(jìn)程創(chuàng)建和終止
- 上下文切換屬性
重要提示:強(qiáng)烈建議您以 root 用戶權(quán)限使用這些工具,因?yàn)樗鼈兛梢匀绱丝焖俚貙?duì)您的 Linux 機(jī)器施加壓力,并避免在設(shè)計(jì)不佳的硬件上出現(xiàn)某些系統(tǒng)錯(cuò)誤。
二、如何在 Linux 中安裝stress工具
1、 安裝stress
要在RHEL / CentOS和Fedora Linux上安裝壓力,您需要有 EPEL 存儲(chǔ)庫,然后鍵入以下 yum 命令進(jìn)行安裝:
# yum install stress
stress的使用方法:
$ sudo stress option argument
- 要產(chǎn)生N個(gè)在 sqrt() 函數(shù)上運(yùn)行的worker,請(qǐng)使用–cpu N選項(xiàng)。
- 要產(chǎn)生N個(gè)在 sync() 函數(shù)上運(yùn)行的worker,請(qǐng)使用–io N選項(xiàng)。
- 要生成在 malloc()/free() 函數(shù)上運(yùn)行的N個(gè)工作程序,請(qǐng)使用–vm N選項(xiàng)。
- 要為每個(gè) vm worker 分配內(nèi)存,請(qǐng)使用–vm-bytes N選項(xiàng)。
- 您可以使用–vm-keep選項(xiàng)重新分配內(nèi)存,而不是釋放和重新分配內(nèi)存資源。
- 使用–vm-hang N選項(xiàng)在釋放內(nèi)存之前將睡眠設(shè)置為N秒。
- 要產(chǎn)生 N個(gè)在 write()/unlink() 函數(shù)上旋轉(zhuǎn)的工作人員,請(qǐng)使用–hdd N選項(xiàng)。
- 您可以使用–timeout N選項(xiàng)在N秒后設(shè)置超時(shí)。
- 通過使用–backoff N選項(xiàng)在任何工作開始之前設(shè)置N微秒的等待。
2、如何在 Linux 系統(tǒng)上使用stress
(1)要檢查每次運(yùn)行命令的效果,首先運(yùn)行uptime命令并記下平均負(fù)載。
接下來,運(yùn)行壓力命令以生成 8 個(gè)在sqrt()上運(yùn)行的worker,超時(shí)時(shí)間為20秒。運(yùn)行壓力后,再次運(yùn)行uptime命令并比較負(fù)載平均值。
localhost ~ $ uptime
localhost ~ $ sudo stress --cpu 8 --timeout 20
localhost ~ $ uptime
(2)要生成 8 個(gè)在 sqrt() 上運(yùn)行且超時(shí)為30秒的worker,顯示有關(guān)操作的詳細(xì)信息,請(qǐng)運(yùn)行以下命令:
localhost ~ $ uptime
localhost ~ $ sudo stress --cpu 8 -v --timeout 30s
localhost ~ $ uptime
(3)要生成一個(gè)具有60秒超時(shí)時(shí)間的malloc()和free()函數(shù)的worker ,請(qǐng)運(yùn)行以下命令。
localhost ~ $ uptime
localhost ~ $ sudo stress --vm 1 --timeout 60s
localhost ~ $ uptime
(4)要在 sqrt() 上生成 4 個(gè) worker,在 sync() 上生成 2 個(gè) worker,在 malloc()/free() 上生成 2 個(gè) worker,超時(shí)時(shí)間為 20 秒,并為每個(gè) vm worker 分配 256MB 的內(nèi)存,運(yùn)行這個(gè)下面的命令。
localhost ~ $ uptime
localhost ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
localhost ~ $ uptime
三、如何在 Linux 中安裝stress-ng工具
1、 安裝stress-ng
要安裝stress-ng,請(qǐng)運(yùn)行以下命令。
# yum install stress-ng [在基于RedHat的系統(tǒng)上]
使用stress-ng的一般語法是:
$ sudo stress-ng 選項(xiàng)參數(shù)
您可以與stress-ng一起使用的一些選項(xiàng):
- 要啟動(dòng)每個(gè)壓力測試的 N 個(gè)實(shí)例,請(qǐng)使用–all N選項(xiàng),如下所示。
- 要通過順序執(zhí)行所有不同的 CPU 壓力測試方法來啟動(dòng) N 個(gè)進(jìn)程來鍛煉 CPU,請(qǐng)使用–cpu N選項(xiàng),如下所示。
- 要使用給定的 CPU 壓力測試方法,請(qǐng)使用–cpu-method選項(xiàng)。您可以使用許多方法,查看手冊頁以查看所有要使用的方法。
- 要在 N 個(gè) bogo 操作后停止 CPU 壓力過程,請(qǐng)使用–cpu-ops N選項(xiàng)。
- 要啟動(dòng) NI/O 壓力測試過程,請(qǐng)使用–io N選項(xiàng)。
- 要在 N 個(gè) bogo 操作后停止 io 壓力過程,請(qǐng)使用 –io -ops N選項(xiàng)。
- 要啟動(dòng) N 個(gè) vm 壓力測試進(jìn)程,請(qǐng)使用–vm N選項(xiàng)。
- 要指定每個(gè) vm 進(jìn)程的內(nèi)存量,請(qǐng)使用–vm-bytes N選項(xiàng)。
- 要在 N 個(gè) bogo 操作后停止 vm 壓力進(jìn)程,請(qǐng)使用–vm-ops N 個(gè)選項(xiàng)
- 使用–hdd N選項(xiàng)啟動(dòng) N 個(gè)硬盤運(yùn)行進(jìn)程。
- 要在 N 個(gè) bogo 操作后停止硬盤壓力過程,請(qǐng)使用–hdd-ops N選項(xiàng)。
- 您可以使用–timeout N選項(xiàng)在 N 秒后設(shè)置超時(shí)。
- 要在 bogo 操作后生成摘要報(bào)告,您可以使用–metrics或–metrics-brief選項(xiàng)。–metrics -brief顯示非零指標(biāo)。
- 您還可以使用–dir N選項(xiàng)啟動(dòng) N 個(gè)進(jìn)程,這些進(jìn)程將使用 mkdir 和 rmdir 創(chuàng)建和刪除目錄。
- 要停止目錄操作進(jìn)程,請(qǐng)使用–dir-ops N選項(xiàng)。
- 要啟動(dòng) N 個(gè) CPU 消耗進(jìn)程來執(zhí)行當(dāng)前的 nice 級(jí)別,包括
- -nice N選項(xiàng)。使用此選項(xiàng)時(shí),每次迭代都會(huì)派生一個(gè)子進(jìn)程,該子進(jìn)程會(huì)運(yùn)行一個(gè)繁忙的循環(huán),每個(gè)級(jí)別運(yùn)行 0.1 秒,然后退出所有不同的 nice 級(jí)別。
- 要停止 nice 循環(huán),請(qǐng)使用–nice-ops N選項(xiàng),如下所示。
- 要啟動(dòng)通過 chmod(2) 和 fchmod(2) 在同一文件上更改文件模式位的 N 個(gè)進(jìn)程,請(qǐng)使用–chmod N選項(xiàng)。請(qǐng)記住,N 的值越大,文件的爭用就越多。壓力源將通過您使用 chmod(2) 指定的所有模式位組合來工作。
- 您可以通過–chmod-ops N選項(xiàng)停止 chmod 操作。
- 您可以使用-v選項(xiàng)來顯示有關(guān)正在進(jìn)行的操作的更多信息。
- 使用-h查看stress-ng 的幫助。
2、如何在 Linux 系統(tǒng)中使用stress-ng
(1)運(yùn)行 8 個(gè) CPU 壓力源,超時(shí)時(shí)間為 60 秒,并在操作結(jié)束時(shí)進(jìn)行匯總。
localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 8 --timeout 60 --metrics-brief
localhost:~$ uptime
(2)運(yùn)行4 個(gè)FFT CPU 壓力源,超時(shí)時(shí)間為 2 分鐘。
localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m
localhost:~$ uptime
(3)要運(yùn)行 5 個(gè)硬盤壓力源并在 100000 次 bogo 操作后停止,請(qǐng)運(yùn)行此命令
localhost:~$ uptime
localhost:~$ sudo stress-ng --hdd 5 --hdd-ops 100000
localhost:~$ uptime
(3)要使用 1GB 虛擬內(nèi)存運(yùn)行 8 個(gè) CPU 壓力源、4 個(gè) I/O 壓力源和 1 個(gè)虛擬內(nèi)存壓力源一分鐘,請(qǐng)運(yùn)行以下命令
localhost:~$ uptime
localhost:~$ sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
localhost:~$ uptime
四、小結(jié)
這些工具應(yīng)該與超級(jí)用戶權(quán)限一起使用,因?yàn)樗鼈儗?duì)系統(tǒng)有一定的影響。這些工具適用于 Linux中的系統(tǒng)管理。