LinuxでIRQプロセスを終了するには?

LinuxでIRQプロセスを終了するには?

irq/${nnn}-nvidia私はまたはで殺すことはできません。これらのプロセスを終了または停止する方法を知っている人はいますか?kill -9pkill -f -9

irq は CPU を 100% 使用します。

(関連がある場合はUbuntu 16.04を使用しています。)

ベストアンサー1

@hobbsが説明したように、これはカーネルスレッドです。より広い視点は次のとおりです。

IRQ処理は、割り込みがいつでも到着できるため、すべてのオペレーティングシステムで問題になります。カーネルが複雑なタスクを処理し、リソースが一貫していない場合(間違ったアドレスを指すポインタなど)でも、割り込みが到着する可能性があります。この問題は、カーネルが割り込み可能で一貫した状態になるまで、割り込みハンドラの実行を許可しないロックで解決できます。ロックの使用の欠点は、ロックが多すぎるとシステムが遅くなり、効率が悪くなる可能性があることです。

したがって、この問題に対する最適な解決策は次のとおりです。

  1. カーネル割り込みハンドラはできるだけ短くしてください。
  2. これらの唯一の使命は、関連するすべての割り込みデータを一時バッファに転送することです。
  3. 一部の「バックグラウンド」スレッドはこのバッファで継続的に動作し、割り込みハンドラの代わりに実際の操作を実行します。

これらの「バックグラウンド」スレッドは割り込みハンドラカーネルスレッドです。

  • top通常のプロセスだと思うかもしれません。
  • しかし、ゼロメモリを使用しているように見えます。
  • はいこれは本当です、実際のユーザー空間メモリがそれらに属していないため

本質的にバックグラウンドで実行されるカーネルスレッド。

カーネルスレッドは終了できません。スレッドは完全にカーネルによって管理されます。これを殺すことができれば、nvidiaドライバのirq / 142ハンドラはもはや存在しなくなります。グラフィックカードが割り込みを送信すると、それを処理できるものは何もありません。その結果、フリーズすることができますが、ビデオは再生されなくなります。

システムの問題は、割り込みハンドラが多くのCPUリソースをキャッチしていることです。次のような多くの潜在的な理由があります。

  • 何らかの理由でハードウェア(ビデオカード)があまりにも多くの割り込みを送信するため、CPUはそれらをすべて処理できません。
  • ハードウェアに問題があります。
  • ドライバーはオフロードドライバーです。

Nvidiaドライバの品質を知ると、残念ながらドライバの欠陥である可能性が最も高くなります。

解決策は何とかドライバをリセットすることです。残酷さの順にいくつかの考え:

  • バックグラウンドで3Dアクセラレーションプロセスを実行していますか?たとえば、Google Earth?その場合は、停止または殺す。
  • Xから文字コンソールに戻り(alt / ctrl / f1)、もう一度戻ります(alt / ctrl / f7)。これにより、ほとんどのビデオが再初期化されます。
  • Xを再起動します(正常に終了するか、alt / ctrl / backspaceと入力してXサーバーを終了します)。
  • Xを殺します(killall -9 Xorg)。キャラクターコンソールでこれを行うと、うまく機能します。

Xを終了してもこのカーネルスレッドが引き続き表示される場合は、Nvidiaカーネルモジュールを削除してみることができます(与えられたリストから見ることができ、以下を使用してlsmod削除できます)。rmmodX を再起動すると、insmodハードウェアは自動的にリセットされます。

何も機能しない場合は、再起動する必要があります。通常の再起動がうまくいかない場合は、これを行うには余分な残忍な方法を使用できます。alt / printscreen / sを使用してからalt / printscreen / bを使用してください。


拡張:一時的な回避策として、このスレッドに非常に低い優先順位()を与えることができますrenice +20 -p 1135。これは実行を続けますが、システムのパフォーマンスに与える影響は少なくなります。

おすすめ記事