多執行緒 Rust 程式中的低 CPU 使用率疑難排解

https://stackoverflow.com/questions/77843404/troubleshooting-low-cpu-utilization-in-a-multi-threaded-rust-program

多執行緒的 Rust 程序 CPU 使用率低的問題調試
一個多執行緒的計算 Rust 程序,啟動與 CPU 核心數相等的執行緒以同時執行計算任務。為了即時監控並行處理程式,我使用了以下方法:

static NUM_THREADS_CAL: AtomicU32 = AtomicU32::new(0);

// …
// 在計算執行緒代碼中
println!(“當前並行度:{}”, NUM_THREADS_CAL.fetch_add(1, std::sync::atomic::Ordering::SeqCst) + 1);
// 進行計算。代碼部分不包含 IO、鎖定或其他會阻塞執行緒的操作。
println!(“當前並行度:{}”, NUM_THREADS_CAL.fetch_sub(1, std::sync::atomic::Ordering::SeqCst) – 1);

“當前並行度”的測試結果大多等於 CPU 核心數或少一個。但實際程式的 CPU 使用率僅約 15%至 20%。請問我應該如何調查可能導致此問題的原因?

via Recent Questions – Stack Overflow

January 19, 2024 at 01:18PM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *