Signals

如何在 Linux 中終止 IRQ 程序?

  • July 23, 2020

我不能通過or殺死irq/${nnn}-nvidia。有誰如何殺死或停止這些過程?kill -9``pkill -f -9

使用 100% CPU 的 irq

(我使用的是 Ubuntu 16.04,如果相關的話。)

正如@hobbs 解釋的那樣,它是一個核心執行緒。更廣泛的觀點如下:

IRQ 處理在任何作業系統中都是有問題的,因為中斷可以隨時到達。即使核心正在處理複雜任務並且資源不一致(指針指向無效地址等),中斷也可能到達。這個問題可以用鎖來解決,即在核心處於可中斷的一致狀態之前不允許中斷處理程序執行。使用鎖的缺點是鎖過多會使系統執行緩慢且效率低下。

因此,該問題的最佳解決方案是:

  1. 核心中斷處理程序盡可能短。
  2. 他們唯一的工作是將所有相關的中斷數據移動到臨時緩衝區
  3. 一些“後台”執行緒在這個緩衝區上連續工作,並代表中斷處理程序做真正的工作。

這些“後台”執行緒是中斷處理程序核心執行緒。

  • 您將它們top視為正常過程。
  • 但是,它們顯示為好像它們使用零記憶體。
  • 是的,這是真的,因為沒有真正的使用者空間記憶體屬於他們

它們本質上是在後台執行的核心執行緒。

您不能殺死核心執行緒:它們完全由核心管理。如果你能殺死它,你的 nvidia 驅動程序中的 irq/142 處理程序將不再存在:如果你的影片卡發送一個中斷,沒有任何東西可以處理它。結果可能會凍結,但您的影片肯定不會再工作了。

您系統中的問題是這個中斷處理程序獲得了大量的 CPU 資源。有很多潛在的原因:

  • 出於某種原因,硬體(您的影片卡)發送瞭如此多的中斷,以至於您的 CPU 無法處理所有這些中斷。
  • 硬體有問題。
  • 司機有問題。

知道 Nvidia 驅動程序的質量,不幸的是,最有可能出現錯誤的驅動程序。

解決方案是以某種方式重置此驅動程序。一些想法,按粗暴排序:

  • 它是否在後台執行一些 3D 加速過程?例如,Google地球?如果是,停止或殺死它。
  • 從 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)賦予非常低的優先級。然後它仍然會執行,但它對您的系統性能的影響較小。

引用自:https://unix.stackexchange.com/questions/387096