kworkerスレッドkacpid_notify / kacpidはCPUの60〜70%を占めます。

kworkerスレッドkacpid_notify / kacpidはCPUの60〜70%を占めます。

私はLinux Mintバージョン19 Taraを実行しています。

私のバッテリー寿命は今本当に良くなく、このkworkerスレッドで私のコンピュータのCPU使用率は常に70%であるため、ファンは常にオンになっています。これは本当に私を悩ませ始めました。起動するとすぐに実行しましたtopが、プログラム(ターミナルを除く)を開く前に、プロセスはすでにCPUの70%を使用していました。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    5 root      20   0       0      0      0 I  66.1   0.0   1:27.86 kworker/0:0-kac

私がそれを実行するとkworkerスレッドがhtop呼び出されるものと 。kacpi_notifykacipid

Grubを編集しようとしましたが、acpi=offシステムが下線が点滅している黒い画面で起動し、それがすべてです。始まらない。

カーネルをアップグレードして5.3.0-51-genericを実行しています。これまでに調査したところによると、BIOSをアップデートする必要があるかもしれませんが、コンピュータメーカーはBIOSアップデートを.exe形式でのみ提供しています。 exeをダウンロードしましたが、ここでどこに行くのかわかりません。

誰でも私を助けることができますか?

ベストアンサー1

他の人が提供した情報は本質的に正確ですが、解決策はそうではありません。トリッキーな部分は不良割り込みを見つけることです。これは、使用しているハードウェアによって変わり、ファームウェア/BIOSなどを更新するときにも変更されることがあります。 Linuxを実行していると仮定すると、次のコマンドを実行して見つけることができます。

grep -Ev "^[ ]*0" /sys/firmware/acpi/interrupts/gpe?? | sort --field-separator=: --key=2 --numeric --reverse | head -1

上記のコードスニペットは、すべての割り込みを見て数字でソートし、最も高い数の割り込みを表示します。私のシステムでは、出力は次のようになります。

/sys/firmware/acpi/interrupts/gpe69: 7802639     STS enabled      unmasked

コマンドに渡される値を調整することで、表示される割り込みの数を増やすことができますが、head関連するCPU使用率を考慮すると、非常にまれな場合を除いて、ほぼ常に(ソート後)最初の行になります。問題の割り込みを識別したと仮定すると、次のように無効にできます。

echo disable > /sys/firmware/acpi/interrupts/gpe69

このプロセスを自動化するには、次のようなスクリプトを作成します。

echo disable > $(grep -Ev '^[ ]*0'  /sys/firmware/acpi/interrupts/gpe?? | sort --field-separator=: --key=2 --numeric --reverse | head -1 | awk -F: '{print $1}')

上記のバージョンではrootとして実行する必要があります。これを防ぐには、次のものを使用できます。

sudo sh -c "echo disable > $(grep -Ev '^[ ]*0'  /sys/firmware/acpi/interrupts/gpe?? | sort --field-separator=: --key=2 --numeric --reverse | head -1 | awk -F: '{print $1}')"

最も高い値の割り込みがディセーブルの場合、エラーメッセージが表示されます。上記のコードスニペットを複数回実行すると、これが発生する可能性があります。これが発生すると、次のエラーが表示されます。

sh: line 1: echo: write error: Invalid argument

grep無効な割り込みをフィルタリングするように式を調整するのは簡単です。これをしないでください。これにより、上記のコマンドを実行すると一部の重要な機能が無効になる可能性があります。

最後に、割り込みを無効にする前にこれが問題であることを確認するのが賢明かもしれません。以下のパッドのいずれかを使用して問題を特定できます。毎秒カウンター値を印刷します。これが問題であれば、値が急速に上昇することがわかります。

while true ; do grep -Ev '^[ ]*0' /sys/firmware/acpi/interrupts/gpe?? | sort --field-separator=: --key=2 --numeric --reverse | head -1 ; sleep 1 ; done

私のシステムでは、次のようになります。

/sys/firmware/acpi/interrupts/gpe69: 7921836     STS enabled      unmasked
/sys/firmware/acpi/interrupts/gpe69: 7925137     STS enabled      unmasked
/sys/firmware/acpi/interrupts/gpe69: 7928459  EN STS enabled      unmasked
/sys/firmware/acpi/interrupts/gpe69: 7931766     STS enabled      unmasked
/sys/firmware/acpi/interrupts/gpe69: 7935122     STS enabled      unmasked

おすすめ記事