首頁 > 後端開發 > C++ > 如何計算 CPU 百分比

如何計算 CPU 百分比

Patricia Arquette
發布: 2025-01-09 06:56:43
原創
408 人瀏覽過

How to % CPU

系統管理員的一個常見問題:「如何在這台機器上快速產生虛擬CPU 負載?」 如果一個或多個核心的簡單100% CPU 負載就足夠了,那麼建立自訂解決方案就會非常容易。

單核心解決方案(One-Liner)

這一行 C 程式碼經過編譯和運行後,將使一個核心的利用率達到 100%:

<code class="language-c">int main() {while (1) {}}</code>
登入後複製

使用 gcc -o stressme stressme.c(或 Windows 上的 cl stressme.c)編譯並使用 ./stressme(或 stressme.exe)運行。 要對多個核心施加壓力,只需執行該程式的多個實例即可。

多核心解決方案(多執行緒)

要進行更受控的多核心壓力測試,請考慮使用 4 個 POSIX 執行緒的多執行緒版本:

<code class="language-c">#include <pthread.h>
#include <unistd.h>

#define NUM_THREADS 4

void *loop(void *arg) {
    while (1) {}
}

int main() {
    pthread_t threads[NUM_THREADS];
    for (int i = 0; i < NUM_THREADS; i++) {
        pthread_create(&threads[i], NULL, loop, NULL);
    }
    for (int i = 0; i < NUM_THREADS; i++) {
        pthread_join(threads[i], NULL);
    }
    return 0;
}</code>
登入後複製

使用gcc -o multistress multistress.c -pthread編譯。

如何運作

核心功能是一個簡單的無限循環(while (1) {})。 在組譯級別,這會轉換為連續的 jmp 指令,從而最大限度地提高 CPU 使用率。 現代搶佔式多任務作業系統允許此循環消耗處理器時間,而不會導致系統完全無回應;該進程仍然可以終止。 相較之下,較舊的協作多任務系統可能會因為這樣的循環而凍結。

<code class="language-assembly">global _start

_start:
    jmp _start</code>
登入後複製

以上是如何計算 CPU 百分比的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板