全部產品
Search
文件中心

Alibaba Cloud Linux:核心統一異常架構(UKFEF)

更新時間:Jul 17, 2024

Alibaba Cloud Linux 3(核心版本5.10.60-9.al8.x86_64開始)增加了核心統一異常架構UKFEF(Unified Kernel Fault Event Framework),用於統計可能導致風險的系統例外狀況事件,並以統一格式輸出附隨報告。本文主要介紹UKFEF所統計的事件、附隨報告輸出形式以及控制UKFEF的介面。

背景資訊

作業系統在出現嚴重問題前,可能會輸出一些特徵或提示資訊。在營運過程中,您可以利用這些資訊進行故障預測和實施營運操作,但由於這些資訊分散在系統中的不同模組,且輸出格式各異。因此,您在收集系統例外狀況事件時可能面臨以下問題:

  • 解析系統例外狀況事件(例如例外狀況事件的含義、可能造成的影響等)需要一定的專業知識作為基礎。

  • 不同格式的例外狀況事件,對於自動化營運不友好,您需要在資訊採集時做格式匹配,並需要做資料清洗。

基於以上問題,Alibaba Cloud Linux 3在作業系統核心層面提供了核心統一異常架構(UKFEF)。UKFEF針對各類可能導致風險的系統例外狀況事件進行統計,並自動判斷事件的嚴重程度,然後統一格式輸出附隨報告,報告包括了問題產生的情境以及建議的風險層級,從而簡化營運過程中對系統異常的識別難度。同時,UKFEF將已知例外狀況事件進行分級,並提供了歷史核心版本不具備的系統風險報告。

UKFEF功能按照例外狀況事件的類型、影響、統計等多個維度輸出報告,便於您在營運時高效地對系統異常進行診斷。此外,附隨報告通過多種形式輸出,避免資料丟失。UKFEF

事件說明

UKFEF劃分的事件類型、事件層級,以及附隨報告形式的說明如下:

事件相關資訊

說明

事件類型

UKFEF統一收集以下作業系統核心常見事件:

  • soft lockup

  • RCU(Read-Copy Update) stall

  • hung task

  • global OOM(Out of Memory)

  • cgroup OOM(Out of Memory)

  • page allocation failure

  • list corruption

  • bad mm_struct

  • I/O error

  • EXT4-fs error

  • MCE(Machine Check Exception)

  • fatal signal

  • warning

  • panic

事件層級

UKFEF將例外狀況事件分為三個層級:

  • Slight:不影響系統繼續運行,但系統內部署的業務可能發生抖動,您可以繼續觀察事件變化。

  • Normal:當前應用進程可能會出現異常。建議對當前應用採取措施,例如kill、重啟或遷移。

  • Fatal:可能會對系統產生致命影響。建議立即進行業務遷移。

附隨報告

UKFEF將通過以下方式輸出附隨報告:

  • 通過核心日誌輸出單次事件的詳細資料。資訊內容樣本如下:

    class Fault event[module:type]:messages. At cpu cpuid, task pid(cmdline). Total fault: cnt

    具體說明如下:

    • class:對應例外狀況事件的層級。

    • module:表示例外狀況事件所屬的模組(sched、mem、io、fs、net、hardware以及由多個模組引起的異常會輸出general)。

    • type:對應例外狀況事件的類型。

    • messages:事件自身的自訂訊息。

    • cpuid:發生例外狀況事件的CPU號。

    • pid(cmdline):例外狀況事件對應進程的pid和cmdline。

      說明

      如果pid為-1,則表示沒有對應的進程。

    • cnt:表示系統啟動以來當前類型的例外狀況事件出現的總和。

  • 通過/proc/fault_events檔案輸出各類例外狀況事件的總和。檔案輸出內容樣本如下:

    Total fault events: 0
    Slight: 0
    Normal: 0
    Fatal: 0
    soft lockup: 0
    rcu stall: 0
    hung task: 0
    global oom: 0
    cgroup oom: 0
    page allocation failure: 0
    list corruption: 0
    bad mm_struct: 0
    io error: 0
    ext4 fs error: 0
    mce: 0
    fatal signal: 0
    warning: 0
    panic: 0

控制UKFEF的介面說明

介面

說明

/proc/sys/kernel/fault_event_enable

該介面控制UKFEF的啟用與關閉。取值範圍:

  • 1:啟用UKFEF。

  • 0:關閉UKFEF。

/proc/sys/kernel/fault_event_print

該介面控制UKFEF是否輸出附隨報告。取值範圍:

  • 1:輸出。

  • 0:不輸出。

/proc/sys/kernel/panic_on_fatal_event

該介面控制出現Fatal事件時,是否觸發作業系統的Panic機制。取值範圍:

  • 1:觸發。

  • 0:不觸發。