Io

如何確定來源:一個核心處於 100% 並“凍結”機器?

  • February 25, 2017

有時在我打開台式電腦後,4 個核心中的一個隨機變為 100% 並且機器“凍結”。

好吧,我已經htop從遠端連接上執行它,我可以看到所有程序仍在工作。

發生的一件有趣的事情是:一個 youtube 影片將繼續播放其音頻,但螢幕完全凍結,甚至滑鼠也不會改變它的位置。

在 htop 的列表頂部,這次是 CPU 使用率為 100% 的 kworker,但其他時候沒有 100% 的程序。cpu 1(核心索引 0)為 100%。因此,核心 0 大約有 10% 被積極使用,而剩餘的條全是紅色的,填充到 100%。我認為紅色填充指示器是 IO 等待對嗎?

然後平均負載不會停止增加。

所以我猜它與某種IO有關,我猜是影片IO?我可以用什麼命令來測試它?

在這種情況下,我什至無法創建新的遠端連接,它不會接受,只會凍結嘗試。因此,我將在循環中啟動此類命令,並在下一次凍結髮生時監視其輸出。

是的,它可能是影片 io。因為100%上有kworker,所以也有中斷溢出。

中斷在 linux 上分兩步處理:1)直接中斷處理程序將所有中斷數據收集在一個臨時隊列中 2)工作人員不在中斷處理程序中工作,而是作為單獨的核心執行緒工作。它們本質上是程序——但沒有使用者空間,它們完全在核心中執行。

之所以如此,是因為中斷處理程序…中斷。它可以隨時發生,忽略任何鎖等。因此,他們應該盡可能少地處理複雜的資料結構。問題很相似,因為您只能從使用者空間信號處理程序呼叫幾個函式。因此,他們將中斷數據收集到一個隊列中,然後工作人員處理這些隊列,這些隊列已經超出了核心空間。

現在的問題是影片晶片不會中斷太多,影片驅動程序的任務只是設置 vga 設置並生成映射到螢幕的緩衝區。他們不應該打斷太多,但儘管如此,它還是經常發生。

youtube 音頻不會停止,因為它是一個多執行緒的東西,它的音頻處理執行緒甚至不知道影片播放器被掛了。

你的 dmesg 裡有什麼?

我懷疑有錯誤的VGA硬體或驅動程序問題。

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