Htop 顯示一個核心在 100% cpu 使用率,但沒有程序使用太多 cpu
這與這個問題非常相關,但由於它沒有任何令人滿意的答案,我想我可以提出一個新問題。
此螢幕截圖顯示 htop 表示一個核心使用率為 100%,但沒有程序使用任何大量 cpu:
我認為這意味著核心出於某種未知原因使用了這麼多 CPU,但我還沒有找到一個很好的調查方法。(現在正在考慮使用 eBPF)我認為這可能與我的磁碟加密和磁碟訪問有關,但 iotop 沒有顯示任何重要的磁碟使用情況。我正在執行帶有完全標準核心的 Arch Linux。
這個問題最近出現了幾次,如果我重新啟動總是會消失,並且總是需要至少幾個小時的時間才能出現。
任何有關如何調試此問題或潛在原因可能是什麼的想法和建議都將受到歡迎。
編輯:
所以這個新的截圖顯示 htop 設置為同時顯示核心和使用者執行緒,但是對於高 cpu 使用率仍然沒有明確的解釋:
編輯2:
以下螢幕截圖顯示了
bfptrace
執行時的結果bpftrace -e 'profile:hz:99 /cpu == 0/ { @[kstack] = count(); }'
。acpi_os_execute_deferred
由於某種原因,核心似乎花費了很多時間。
終於找到了答案。事實證明,該問題與此問題相同,並在此處和此處提供了其他資訊。這些都沒有提到 htop 顯示零使用率的問題,所以這可能是一個不相關的問題。
正如上面連結中所解釋的,答案是使用
sudo grep . -r /sys/firmware/acpi/interrupts/
然後使用echo "disable" /sys/firmware/acpi/interrupts/gpe6D
來禁用有問題的中斷(在我的情況下,附加了最大數字的中斷gpe6D
)。為了弄清楚這是我在問題
bfptrace
中解釋的問題,用於進行核心堆棧跟踪並找出 cpu 花費時間的位置,然後bpftrace -e 'kprobe:acpi_ps_parse_aml /cpu == 0/ { printf("%d\n", tid); }'
找到列出的函式之一的核心執行緒 ID。原來有問題的執行緒是kworker/0:3-kacpi_notify
,然後從一些Google搜尋結果發現其他人也有與這個核心執行緒類似的問題。