这与这个问题非常相关,但由于它实际上没有任何令人满意的答案,我想我可以问一个新问题。
此屏幕截图显示 htop 指示一个核心利用率为 100%,但没有进程使用任何大量 CPU:
我认为这意味着内核出于某种未知的原因使用了这么多的CPU,但我还没有找到一个很好的方法来调查这个问题。(现在考虑使用 eBPF)我认为这可能与我的磁盘加密和磁盘访问有关,但 iotop 没有显示任何重要的磁盘使用情况。我正在运行带有完全标准内核的 Arch Linux。
这个问题最近出现了几次,如果我重新启动,总是会消失,并且总是需要至少几个小时的时间才能出现。
任何有关如何调试此问题或根本原因可能是什么的想法和建议都将非常受欢迎。
所以这个新的屏幕截图显示 htop 设置为显示内核和用户线程,但对于高 cpu 使用率仍然没有明确的解释:
bfptrace
以下屏幕截图显示了运行时的结果bpftrace -e 'profile:hz:99 /cpu == 0/ { @[kstack] = count(); }'
。由于某种原因,内核似乎花费了大量时间acpi_os_execute_deferred
。
如果我寻找 ACPI 中断,我会发现:
/sys/firmware/acpi/interrupts/sci: 55414
/sys/firmware/acpi/interrupts/error: 0
/sys/firmware/acpi/interrupts/gpe00: 0 invalid
/sys/firmware/acpi/interrupts/gpe01: 0 invalid
/sys/firmware/acpi/interrupts/gpe02: 0 invalid
/sys/firmware/acpi/interrupts/gpe03: 0 invalid
/sys/firmware/acpi/interrupts/gpe04: 0 invalid
/sys/firmware/acpi/interrupts/gpe05: 0 invalid
/sys/firmware/acpi/interrupts/gpe06: 0 enabled
/sys/firmware/acpi/interrupts/gpe07: 0 enabled
/sys/firmware/acpi/interrupts/gpe08: 0 invalid
/sys/firmware/acpi/interrupts/gpe09: 0 disabled
/sys/firmware/acpi/interrupts/gpe10: 0 enabled
/sys/firmware/acpi/interrupts/gpe11: 0 invalid
/sys/firmware/acpi/interrupts/gpe12: 0 invalid
/sys/firmware/acpi/interrupts/gpe13: 0 invalid
/sys/firmware/acpi/interrupts/gpe14: 1 enabled
/sys/firmware/acpi/interrupts/gpe15: 0 invalid
/sys/firmware/acpi/interrupts/gpe16: 1 enabled
/sys/firmware/acpi/interrupts/gpe0A: 0 invalid
/sys/firmware/acpi/interrupts/gpe17: 54753 enabled
/sys/firmware/acpi/interrupts/gpe0B: 0 invalid
/sys/firmware/acpi/interrupts/gpe18: 0 invalid
/sys/firmware/acpi/interrupts/gpe0C: 0 invalid
/sys/firmware/acpi/interrupts/gpe19: 0 invalid
/sys/firmware/acpi/interrupts/gpe0D: 0 disabled
/sys/firmware/acpi/interrupts/gpe0E: …
Run Code Online (Sandbox Code Playgroud)