如何在 Linux 系統上使用 bash 命令製造 CPU 尖峰?


如果您一直在程式設計,您可能已經觀察到某些情況和場景,其中程式卡住或程序陷入無限迴圈,這反過來又會給處理該程序的執行緒核心帶來壓力。

有很多這樣的情況,這是非常可能的。

我們通常使用不同的技術來避免這種情況,例如在程式碼邏輯本身中處理它們或使用第三方工具來處理它們。

Linux 還提供了一個命令,我們可以用它來跟蹤 CPU 和記憶體使用情況的不同引數。該命令是 **top**。只需在終端中鍵入以下命令,您就會看到一個不斷變化的表格形狀輸出。

示例

請考慮以下示例:

Processes: 480 total, 2 running, 478 sleeping, 1914 threads
14:36:22
Load Avg: 2.33, 3.43, 3.41 CPU usage: 20.68% user, 10.90% sys, 68.40% idle
SharedLibs: 263M resident, 53M data, 254M linkedit.
MemRegions: 179160 total, 1887M resident, 55M private, 494M shared.
PhysMem: 8108M used (1722M wired), 82M unused.
VM: 3412G vsize, 2318M framework vsize, 5752706(0) swapins, 6194358(0)
swapouts. Networks: packets: 22871569/28G in, 5756073/1771M out.
Disks: 6360234/144G read, 5499350/85G written.

PID COMMAND %CPU TIME #TH
6720 Terminal 51.9 02:49.30 8
130 WindowServer 34.0 07:17:41 12
0 kernel_task 11.8 03:23:39 178/4
24506 top 8.3 00:11.75 1/1

輸出一開始可能看起來有點複雜,但我們只需要考慮 %CPU 列。它表示當前任務正在消耗的 CPU 百分比。請注意,在我執行的程序中,它很少超過 20%。

現在,為了製造 CPU 尖峰,我們有不同的方法可以使用。

第一種也是最常見的方法是使用 **stress** 命令。stress 命令與 CPU 核心數和/或您希望核心達到最大值的超時時間一起使用。

如果您沒有安裝 stress,您可以使用以下命令安裝它:

對於 **Ubuntu**:

sudo apt-get install stress

對於 **Mac**:

brew install stress

語法

stress --cpu n

或者

stress --cpu n --timeout time

您可以使用上面顯示的任何一個命令。

讓我們使用第一個命令,我們將要求 stress 命令使我們機器的兩個核心達到最大值。

命令

請考慮以下命令:

immukul@192 ~ % stress --cpu 2
stress: info: [25675] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

輸出

PID    COMMAND %CPU  TIME    #TH
25676  stress  98.5 00:36.23 1/1
25677  stress  98.4 00:36.42 1/1

另一種無需使用第三方包即可實現此目的的方法是使用以下簡單的 Linux 程式碼:

for i in 1 2 3 ; do while : ; do : ; done & done

以上單行程式碼將導致您的作業系統的三個核心達到最大值。

命令

immukul@192 Downloads % for i in 1 2 3 ; do while : ; do : ; done & done
[2] 25691
[3] 25692
[4] 25693

輸出

PID    COMMAND %CPU   TIME    #TH
25693  zsh     81.7  00:57.12 1/1
25691  zsh     81.4  00:57.00 1/1
25692  zsh     78.6  00:57.00 1/1

更新於:2021年7月29日

1K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告