web-dev-qa-db-ja.com

LinuxでIRQプロセスを強制終了するにはどうすればよいですか?

殺せないirq/${nnn}-nvidia 沿って kill -9またはpkill -f -9。これらのプロセスを強制終了または停止する方法はありますか?

the irq using 100% of CPU

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

5
TMit

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

カーネルが複雑なタスクで瞬時に動作し、多くのリソースが不整合(ポインターが無効なアドレスを指しているなど)であっても、割り込みはいつでも発生する可能性があるため、IRQ処理はどのOSでも問題があります。これはロックによって解決できます。つまり、中断可能な一貫した状態に再び到達しない限り、割り込みハンドラーの実行を許可しません。ロックが多すぎるとシステムが遅くなり、効果がなくなるという大きな欠点があります。

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

  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で指定されたリストで確認できます。その後、rmmodで削除できます。 )。 Xを再起動すると自動的にinsmodされ、ハードウェアがリセットされます。

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


拡張機能:一時的な回避策として、そのタスクに非常に低い優先度を与えることを試みることができます(renice +20 -p 1135)。その後は引き続き実行されますが、システムのパフォーマンスが大幅に低下することはありません。

できません。これはプロセスではなく、カーネルスレッドです。あなたはそれを殺すことはできません、そしてあなたがなんとかしてやったらあなたのシステムを(もっと)使えなくするだけでしょう。

3
hobbs