2023-07-26|閱讀時間 ‧ 約 3 分鐘

【Linux疑難雜症】kernel … BUG: soft lookup

raw-image

圖片來源...

前景提要

故事是這樣的,小明某一天在Linux系統上進行AI模型訓練時, 原本安心的去睡覺了, 沒想到一早起床想要看成功結果時, 竟然有一條可疑的LOG…。

kernel:[1270601.804083] watchdog: BUG: soft lockup - CPU#8 stuck for 27s! [kcompactd2:411]

圖片來源...

這究竟是什麼狀況呢? 雖然只是警告訊息, 但好奇心強烈的小明一直想要得到一個答案, 因此我們就來協助它排除這個問題吧!

CPU軟鎖定(soft lockup)是怎麼發生的?

這是Linux內核的一個保護機制,用於檢測並回報發生了長時間未回應的核心任務或進程。

軟鎖定通常發生在某個任務或進程進入了無限循環或阻塞狀態,導致無法响应其他任務或中斷。當內核檢測到這種情況時,會生成一個錯誤訊息,以警告系統存在問題。

CPU負載時間過長、電壓不穩定、I/O問題…等, 需要逐一排查。

應該怎麼處理呢?

雖然我們可以將watchdog的時間間隔拉大, 就能夠暫時解決問題。

# 預設為10, 這邊我們拉到30
echo 30 > /proc/sys/kernel/watchdog_thresh

但這只是蒙蔽自己不看到問題而已, 最終還是得逐一排查才行, 有可能我們的系統已經在告訴我們有狀況需要注意了, 就如同身體發出警告一樣, 若我們只是屏蔽它, 那麼問題將會積少成多, 最終導致較難以處理的大問題。

以下是幾種可能原因:

  1. 不當的內核模組:某些內核模組可能不穩定或有錯誤,導致系統出現軟鎖定。
  2. 資源競爭:當多個任務或進程競爭訪問共享資源時,可能導致死鎖或軟鎖定。
  3. 低級硬體問題:硬體故障或兼容性問題可能導致軟鎖定。
  4. 運行時間過長的任務:某些任務在執行時耗時過長,可能觸發軟鎖定保護機制。

我們可以向這些方向進行排查。

結語

Linux系統雖然相對門檻較高, 但使用者也都非常樂意分享遇到的狀況以及處理方法,所以基本上都不用害怕這個系統, 而且處理效能相對較佳, 尤其我們開發雲服務的應用程式時就非常需要Linux的技能, 不妨好好的學習一番, 跟上時代的趨勢。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.