Htop показывает одно ядро ​​при 100% загрузке ЦП, но ни один процесс не использует много ЦП

So does Bash first run through the whole script to find variables?

Нет. Как вы сами обнаружили в своем примере, Bash-скрипты выполняются сверху вниз.

Хорошей практикой является определение всех необходимых переменных в начале сценария.

4
08.06.2021, 04:17
1 ответ

Наконец нашел ответ. Оказывается, вопрос такой же, как этот вопрос с дополнительной информацией здесь и здесь . Ни в одном из них не упоминается проблема с тем, что htop показывает нулевое использование, так что это может быть несвязанной проблемой.

Как объяснено в приведенных выше ссылках, ответ состоял в том, чтобы использовать sudo grep. -r /sys/firmware/acpi/interrupts/, а затем использовать echo "disable" /sys/firmware/acpi/interrupts/gpe6D, чтобы отключить проблемное прерывание (с наибольшим присоединенным числом, в моем случаеgpe6D).

Чтобы понять, что это была проблема, я использовал bfptrace, как объяснено в вопросе, чтобы выполнить трассировку стека ядра и выяснить, где процессор тратит время, а затем bpftrace -e 'kprobe:acpi_ps_parse_aml /cpu == 0/ { printf("%d\n", tid); }', чтобы найти идентификатор потока ядра одного из перечисленные функции. Выяснилось, что проблемным потоком был kworker/0:3-kacpi_notify, а затем, погуглив, выяснилось, что у других тоже были подобные проблемы с этим потоком ядра.

3
28.07.2021, 11:26

Теги

Похожие вопросы