• 產品與解決方案
  • 行業解決方案
  • 服務
  • 支持
  • 合作夥伴
  • 關於我們

11-網絡管理和監控配置指導

目錄

16-進程監控和維護配置

本章節下載 16-進程監控和維護配置  (298.41 KB)

16-進程監控和維護配置


1 進程監控和維護

1.1  進程監控和維護簡介

設備的係統軟件基於Linux內核,各個網絡服務功能分別運行各自的進程,實現模塊化。運行在用戶空間的進程稱為用戶態進程,與用戶態進程相對的是內核線程,內核線程運行在內核態空間。

·     係統軟件的絕大部分程序是用戶態進程。每個用戶態進程擁有獨立的進程空間,單個進程的異常不會影響係統其他進程,從而提高了係統的可靠性。通常情況下,係統會自動監控用戶態進程,不需要用戶幹預。當單個用戶態進程中包含多個獨立或半獨立的活動,可以將這些活動拆分成多個線程。係統軟件支持多線程並發和搶占,多個線程分工合作共同實現某個功能。一個進程是否包含多個線程,由軟件實現需要決定。

·     內核線程用來執行係統軟件內核代碼和係統調用。它擁有比用戶態進程更高的安全級別,當內核線程發生異常,通常係統會完全崩潰。用戶可以使用命令行來監控內核線程的運行狀態。

1.2  進程監控和維護任務簡介

進程監控和維護配置任務如下:

·     (可選)開啟/關閉第三方進程

¡     開啟第三方進程

¡     關閉第三方進程

·     監控和維護用戶態進程

¡     監控和維護進程

本節中羅列的命令對用戶態進程和內核線程均適用。

¡     監控和維護用戶態進程

本節中羅列的命令僅對用戶態進程適用。

·     監控和維護內核線程

¡     監控和維護進程

本節中羅列的命令對用戶態進程和內核線程均適用。

¡     監控與維護內核線程

本節中羅列的命令僅對內核線程適用。

1.3  開啟/關閉第三方進程

1.3.1  功能簡介

Comware係統運行時,不會自動開啟第三方進程。使用本特性,用戶可以開啟或關閉Puppet和Chef等第三方進程。

1.3.2  開啟第三方進程

1. 配置限製和指導

如果多次執行third-part-process start命令,且指定的進程名稱相同,能否執行成功,由第三方進程決定。用戶可執行display current-configuration | include third-part-process查看實際生效的配置。

2. 配置步驟

(1)     進入係統視圖。

system-view

(2)     開啟第三方進程。

third-part-process start name process-name [ arg args ]

1.3.3  關閉第三方進程

(1)     請在任意視圖下執行如下命令,顯示第三方進程的編號。

display process all

本命令的顯示信息中THIRD字段標識為Y的進程為第三方進程,PID字段為進程的編號。

(2)     進入係統視圖。

system-view

(3)     關閉第三方進程。

third-part-process stop pid pid&<1-10>

本命令隻能關閉通過third-part-process start命令開啟的第三方進程。

1.4  監控和維護進程

1. 功能簡介

本節中羅列的命令對用戶態進程和內核線程均適用。使用這些命令,可以進行如下操作:

·     顯示內存的整體使用情況。

·     顯示係統當前運行了哪些進程,每個進程占用了多少內存和多少CPU資源。

·     定位異常進程。如果某個進程占用內存或者CPU資源過多,則確認該進程為異常源。如果異常源是用戶態進程,可參考“1.5  監控和維護用戶態進程”來進一步定位解決問題;如果異常源是內核線程,可參考“1.6  監控與維護內核線程”來進一步定位解決問題。

2. 配置步驟

請在任意視圖下執行以下命令,來監控和維護進程。

表1-1 監控和維護進程

操作

命令

顯示係統內存使用情況(本命令的詳細描述請參見“基礎配置命令參考中的“設備管理”)

display memory [ summary ] [ slot slot-number [ cpu cpu-number ] ]

顯示進程的狀態信息

display process [ all | job job-id | name process-name ] [ slot slot-number [ cpu cpu-number ] ]

顯示所有進程的CPU占有率信息

display process cpu [ slot slot-number [ cpu cpu-number ] ]

監控進程運行狀態

monitor process [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ]

監控線程運行狀態

monitor thread [ dumbtty ] [ iteration number ] [ slot slot-number [ cpu cpu-number ] ]

 

1.5  監控和維護用戶態進程

1.5.1  功能簡介

當用戶態進程運行異常,可使用本特性來進一步監控用戶態進程、定位用戶態進程故障。

1.5.2  配置core文件生成功能

1. 功能簡介

開啟用戶態進程的core文件生成功能,並配置能生成的core文件的最大個數後,用戶態進程異常重啟一次,就會產生一個core文件並記錄用戶態進程的異常信息。如果生成的core文件的數目達到最大值,則不再生成新的core文件。軟件開發和維護人員能夠根據core文件的內容來定位異常的原因和異常的位置。

2. 配置限製和指導

因為生成的core文件會占用係統存儲資源,如果用戶對某些用戶態進程的異常退出不關心,可以關閉這些用戶態進程的core文件記錄功能。

3. 配置步驟

以下命令均在用戶視圖下執行。

(1)     (可選)配置core文件的保存路徑。

exception filepath directory

缺省情況下,Core文件的保存路徑為設備缺省文件係統的根目錄。關於缺省文件係統的詳細介紹請參見“基礎配置指導”中的“文件係統管理”。

(2)     開啟/關閉用戶態進程異常時生成core文件的功能,以及配置能生成的core文件的最大個數。

process core { maxcore value | off } { job job-id | name process-name }

缺省情況下,用戶態進程在首次異常時會生成core文件,後續異常不再生成core文件。即maxcore的最大數值為1。

1.5.3  用戶態進程顯示和維護

在任意視圖下,通過用戶態進程的顯示信息,用戶可以更好的了解用戶態進程的實時運行狀態;同時,當出現係統異常繁忙或者資源消耗異常等故障時,顯示信息可以幫助用戶確認出現故障的功能點,以便盡快進行功能的恢複。

在用戶視圖下,執行reset命令,可以清除用戶態進程的指定信息。

表1-2 用戶態進程顯示和維護

操作

命令

顯示用戶態進程異常時的上下文信息

display exception context [ count value ] [ slot slot-number [ cpu cpu-number ] ]

顯示core文件的保存路徑

display exception filepath [ slot slot-number [ cpu cpu-number ] ]

顯示所有用戶態進程的日誌信息

display process log [ slot slot-number [ cpu cpu-number ] ]

顯示所有用戶態進程的代碼段、數據段以及堆棧等的內存使用信息

display process memory [ slot slot-number [ cpu cpu-number ] ]

顯示用戶態進程堆內存的使用情況

display process memory heap job job-id [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

顯示用戶態進程的空閑內存分片的信息

display process memory fragment free job job-id [ slot slot-number [ cpu cpu-number ] ]

顯示用戶態進程已使用的內存分片信息

display process memory fragment used used-block job job-id [ slot slot-number [ cpu cpu-number ] ]

顯示從指定地址開始的內存空間的內容

display process memory heap job job-id address starting-address length memory-length [ slot slot-number [ cpu cpu-number ] ]

顯示指定大小已使用內存塊的地址

display process memory heap job job-id size memory-size [ offset offset-size ] [ slot slot-number [ cpu cpu-number ] ]

清除用戶態進程異常時記錄的上下文信息

reset exception context [ slot slot-number [ cpu cpu-number ] ]

 

1.6  監控與維護內核線程

1.6.1  配置內核線程死循環檢測功能

1. 功能簡介

在內核態空間中,所有資源都是共享的,多個內核線程之間通過任務調度協調工作。如果某個內核線程長時間一直占用CPU,就會導致其它內核線程獲取不到運行機會,整個係統掛死,這種現象稱為死循環。

開啟內核線程死循環檢測功能後,如果係統發現某內核線程在指定時間內一直占用CPU,則判定該內核線程為死循環,係統會記錄一條死循環信息供管理員查詢。

2. 配置限製和指導

注意

對於內核線程死循環檢測功能,建議用戶使用缺省配置即可。如果確實需要修改缺省配置,請在工程師的指導下進行,以免引起係統異常。

 

3. 配置步驟

(1)     進入係統視圖。

system-view

(2)     開啟內核線程死循環檢測功能。

monitor kernel deadloop enable [ slot slot-number [ cpu cpu-number [ core core-number&<1-64> ] ] ]

缺省情況下,內核線程死循環檢測功能處於開啟狀態。

(3)     (可選)配置判定內核線程是否死循環的時長。

monitor kernel deadloop time time [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,當某內核線程連續運行超過22秒鍾,則判定為死循環。

(4)     (可選)配置不檢測指定內核線程是否發生了死循環。

monitor kernel deadloop exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,開啟內核線程死循環檢測功能後,會監控所有內核線程是否發生了死循環。

(5)     (可選)配置內核線程死循環後係統執行的操作。

monitor kernel deadloop action { reboot | record-only } [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,係統檢測到內核線程死循環後,執行的操作為reboot。

1.6.2  配置內核線程餓死檢測功能

1. 功能簡介

如果內核線程本身的觸發條件沒有達到,會導致該內核線程在一段時間內一直得不到調度,這種現象稱為餓死。

開啟內核線程餓死檢測功能後,當係統檢測到某內核線程餓死時,會記錄一條餓死信息供管理員查詢。

內核線程餓死並不會影響整個係統的運行,當觸發條件達到,處於餓死狀態的內核線程會自動執行。

2. 配置限製和指導

注意

對於內核線程餓死檢測功能,建議用戶使用缺省配置即可。如果確實需要修改缺省配置,請在工程師的指導下進行,以免引起係統異常。

 

3. 配置步驟

(1)     進入係統視圖。

system-view

(2)     開啟內核線程餓死檢測功能。

monitor kernel starvation enable [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,內核線程餓死檢測功能處於關閉狀態。

(3)     (可選)配置判定內核線程是否餓死的時長。

monitor kernel starvation time time [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,當某內核線程在120秒內一直沒有運行,則認為該內核線程被餓死。

(4)     (可選)配置不檢測指定內核線程是否發生了餓死。

monitor kernel starvation exclude-thread tid [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,開啟內核線程餓死檢測功能後,會監控所有內核線程是否發生了餓死。

1.6.3  監控內核態的中斷關閉

1. 功能簡介

背景知識

在操作係統中,內核態(Kernel Mode)是CPU的一種權限運行模式,在該模式下,運行的代碼可以直接訪問所有硬件資源和內存。相對地,用戶態(User Mode)是限製了權限的運行模式,普通應用程序在用戶態下運行,不能直接進行硬件操作。

中斷指CPU在執行程序時,由於外部事件(如硬件設備的請求或異常情況)而暫停當前任務,去處理這一事件的機製。中斷可以讓操作係統對發生的各種事件作出即時響應。

內核態中斷是指當CPU在內核態下運行時接收到的中斷請求。這些中斷通常處理一些關鍵的係統級任務,比如硬件設備的輸入輸出(I/O)操作、內存管理異常、係統調用等。因為這些操作需要較高的權限來訪問硬件資源,所以隻能在內核態下進行。

處理中斷的基本步驟通常包括:

(1)     中斷發生時,CPU立即完成當前指令的執行。

(2)     CPU保護當前環境,通常是通過保存寄存器狀態到棧中。

(3)     CPU根據中斷向量表找到相應的中斷處理程序的入口地址,並跳轉到那裏執行。

(4)     中斷處理程序執行,完成對中斷事件的處理。

(5)     中斷處理程序執行完畢後,恢複之前保存的寄存器狀態,返回到被打斷的程序繼續執行。

內核態中斷處理是操作係統關鍵性能和穩定性的重要組成部分。它需要非常精心地設計,以確保係統的響應性能和資源使用的高效性。

內核態中斷關閉通常指的是操作係統內核為了防止在執行某些關鍵代碼段時被中斷打斷,而暫時禁止中斷的發生。這是因為在處理某些關鍵的數據結構或執行某些必須連續完成的操作時,中斷可能會引入競態條件或數據不一致的問題。

在內核態中斷關閉的狀態下,操作係統會忽略大部分中斷請求,或者將它們延遲到中斷重新開啟後再處理。這樣做可以保證代碼段的原子性,即這段代碼要麼完全執行,要麼完全不執行,不會被中斷打斷。但是,這種方法也有其風險和缺點:

·     響應性降低:在關閉中斷的期間內,係統對中斷的響應會被延遲,這可能會影響係統的實時性能。

·     死鎖風險:如果在關閉中斷的狀態下進入了長時間的操作,或者代碼中有錯誤導致無法重新開啟中斷,係統可能會陷入死鎖狀態。

·     安全風險:由於中斷是硬件和係統之間交互的重要機製,長時間關閉中斷可能會錯過一些關鍵的硬件通知,比如電源故障警告。

因此,操作係統設計者會盡量減少關閉中斷的時間,隻在必要的時候並盡可能短的時間內關閉中斷。

請在專業人士的指導下配置中斷關閉功能。

應用場景

部分內核線程在運行過程中,為了保證代碼段的原子性(即這段代碼要麼完全執行,要麼完全不執行,不會被中斷打斷),會根據業務需要自動暫時將CPU中斷關閉,這可能導致其它業務的請求得不到處理,其它業務呈現出運行異常的現象。此時,可以開啟內核態的中斷關閉監控功能,來明確是否存在中斷關閉以及獲取中斷關閉的信息協助定位問題。

工作機製

開啟內核態的中斷關閉監控功能後,係統會監控CPU中斷關閉的時長,當該時長達到threshold參數指定的閾值時,則觸發監控動作,監控動作就是將中斷信息記錄到/proc/路徑下的文件中。記錄的信息包括業務流程信息和時長等,用於定位問題。

執行display kernel monitor disable-interrupt info命令可以查看中斷的相關信息。

2. 配置限製和指導

開啟內核態的中斷關閉監控功能會占用額外的CPU資源。在CPU資源緊張的情況下,可能會影響設備的其他業務,請謹慎使用。

3. 配置步驟

(1)     進入係統視圖。

system-view

(2)     開啟內核態的中斷關閉監控功能。

monitor kernel disable-interrupt [ threshold threshold ] [ slot slot-number [ cpu cpu-number ] ]

缺省情況下,內核態的中斷關閉監控功能處於關閉狀態。

1.6.4  內核線程顯示和維護

在任意視圖下,通過內核線程的顯示信息,用戶可以更好的了解內核線程的實時運行狀態;同時,當出現係統異常繁忙或者資源消耗異常等故障時,顯示信息可以幫助用戶確認出現故障的功能點,以便盡快進行功能的恢複。

在用戶視圖下,執行reset命令,可以清除內核線程的統計信息。

表1-3 內核線程顯示和維護

操作

命令

顯示內核線程死循環監控參數配置

display kernel deadloop configuration [ slot slot-number [ cpu cpu-number ] ]

顯示內核線程死循環信息

display kernel deadloop show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

顯示內核線程的異常信息

display kernel exception show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

顯示設備中斷關閉的監控信息

display kernel monitor disable-interrupt info [ slot slot-number [ cpu cpu-number ] ]

顯示內核線程的重啟信息

display kernel reboot show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

顯示內核線程餓死監控參數配置

display kernel starvation configuration [ slot slot-number [ cpu cpu-number ] ]

顯示內核線程餓死信息

display kernel starvation show-number [ offset ] [ verbose ] [ slot slot-number [ cpu cpu-number ] ]

清除內核線程死循環信息

reset kernel deadloop [ slot slot-number [ cpu cpu-number ] ]

清除內核線程的異常信息

reset kernel exception [ slot slot-number [ cpu cpu-number ] ]

清除內核線程重啟信息

reset kernel reboot [ slot slot-number [ cpu cpu-number ] ]

清除內核線程餓死信息

reset kernel starvation [ slot slot-number [ cpu cpu-number ] ]

不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!

BOB登陆
官網
聯係我們