如何在 Linux 中終止 IRQ 程序?
我不能通過or殺死
irq/${nnn}-nvidia
。有誰如何殺死或停止這些過程?kill -9``pkill -f -9
(我使用的是 Ubuntu 16.04,如果相關的話。)
正如@hobbs 解釋的那樣,它是一個核心執行緒。更廣泛的觀點如下:
IRQ 處理在任何作業系統中都是有問題的,因為中斷可以隨時到達。即使核心正在處理複雜任務並且資源不一致(指針指向無效地址等),中斷也可能到達。這個問題可以用鎖來解決,即在核心處於可中斷的一致狀態之前不允許中斷處理程序執行。使用鎖的缺點是鎖過多會使系統執行緩慢且效率低下。
因此,該問題的最佳解決方案是:
- 核心中斷處理程序盡可能短。
- 他們唯一的工作是將所有相關的中斷數據移動到臨時緩衝區
- 一些“後台”執行緒在這個緩衝區上連續工作,並代表中斷處理程序做真正的工作。
這些“後台”執行緒是中斷處理程序核心執行緒。
- 您將它們
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
)賦予非常低的優先級。然後它仍然會執行,但它對您的系統性能的影響較小。