Global Sources
電子工程專輯
 
電子工程專輯 > 記憶體/儲存
 
 
記憶體/儲存  

滿足電信業等級性能要求的Linux系統資源監測

上網時間: 2003年09月27日     打印版  Bookmark and Share  字型大小:  

關鍵字:廠商級Linux  RMON  資源監測器  計數值  量規 

Linux Carrier Grade Edition(CGE)平台的資源監測子系統可以提供RMON資源監測器兩種不同功能的系統資源監測包,利用這兩種監測包可以對系統的資源實現正確的監測。本文介紹了這兩種監測包的特點,並舉例說明如何使用RMON。

在控制原理中,一個基本的原則是‘沒有經過測試的對象無法進行控制’。對於希望長時間連續工作的廠商級系統來說,該原則意味著必須對所使用的設備資源進行監測,以保證這些資源在任何時候的可用性,並確保系統不會超負載工作。

在這裡,電信業等級Linux被定義為:能夠滿足《開放原始程式碼開發實驗室(OSDL)廠商級Linux要求定義》第1版要求的具有優先級屬性的Linux。廠商級Linux要求提供一個資源監測子系統,該子系統能夠監測磁碟、網路、CPU和記憶體等的使用狀況和過程狀態。

本文將著重介紹MontaVista公司Linux Carrier Grade Edition(CGE)平台的資源監測特性,該平台是滿足廠商級Linux絕大部份要求的商用化Linux產品。CGE提供的資源監測子系統可以提供兩種不同功能的監測包,分別是RMON和資源監測器(Resource Monitor)。下面將就這兩種監測包各自的優缺點加以討論,同時舉例說明如何使用RMON。

RMON能在核心中提供一種即時監測資源的功能,如RMON能夠用來監測系統啟動後產生的分支數量。為了有效地監測各類資源,RMON採用了計數器、量規(gauge)、統計值和閘限值。計數器對單調增加的事件計數,比如接收到的乙太網路數據包數量;量規專門用於儲存可以上下浮動的數值,如目前的任務數量;統計值是根據量規運算得出的一種數值,如每秒數據包數量;閘限值則是統計值或量規,當達到閘限值時系統將產生相關動作,如當統計值達到某個閘限值時,RMON設備會從設備的read()調用中返回一些數據。下面的量規和計數器是作為CGE的一部份提供的。

基於乙太網路單介面或匯集數據的計數器和量規:


1. 接收到的數據包


2. 接收到的數據位元組


3. 接收到的錯誤數


4. 已發送的數據包數


5. 已發送的位元組數


6. 發送錯誤數

系統資源:


1. 目前空閒記憶體頁數


2. 目前進程數


3. 目前不活動的進程數


4. 製作的進程數


5. 目前的系統負載

用戶也可以從用戶空間(user-space)製作自己的資源,這些用戶空間可以被其它用戶空間或核心程式碼監測。在核心中具有完整的應用編程介面(API),該API能實現所有用戶空間API可實現的功能,因此核心中的執行緒可以監測任何資源。

使用RMON

在使用RMON前,需要重新配置核心以使資源監測器工作。為了實現RMON,還需要實現核心中的資源監測支援功能,並重新建構核心。資源監測支援選單選擇位於作業系統中的核心除錯和恢復部份。

在核心中的RMON被啟動後,設計工程師就可以在驅動器資源程式碼中增加資源監測功能。

RMON規格

RMON API定義了兩種基本的監測器類型,即計數值和量規。

計數值是單調增加的數值,例如寫入磁碟的位元組數量或接收到的乙太網路包數。計數值具有一個活動值和一個印象值,活動值是指目前計數的值,印象值是指已經保存過的前一計數值。可以用命令將活動值拷貝到印象值,也可以在最小的作業單位時間內將它置為零(不丟失任何計數值)。圖1:監測FDDI數據包接收的計數器實現程式碼段。

量規是指那些數值可以上下浮動的值,比如系統中的進程數或系統目前正使用的儲存容量。量規可以設置為最大和最小值(對於某些量規來說這樣做可能沒有多少意義)。與計數值類似,量規也有一個活動值和一個印象值,印象值可以由命令獲得,但與計數值不同的是,活動值不能被置為零。

統計值是一種監測值,可以附屬於計數器和量規。統計值允許對原始的量規和計數值進行預處理。

計數器具有以下一些統計值:

速率:指一定時間內增量值的動態平均數。所報告的數值是在一段特定時間內的平均值,是根據時間乘以取樣數量後的平均。例如,如果時間是1,000ms,取樣數是10,那麼報告的將是過去10秒內每秒的平均值。

漏桶(Leaky bucket):漏桶會周期性地用一個設定數對計數值遞減。這使人們更容易發現那些可能具有峰值使用模式的計數器。

量規具有以下一些統計值:

高水印(high-water mark):自從上一個印象值後出現的最大量規值。


低水印:自從上一個印象值後出現的最小量規值。

統計值類似於從讀取和即時觀察角度來看的量規或計數器。

一個監測器可能會有多個實例,因此允許單個監測器內擁有多個計數器。例如,如果製作了一個‘接收乙太網路位元組數’的監測器,那麼系統中的每個乙太網路卡都會有一個實例。此時雖然只有一個監測器,但有多個實例,並且每個實例都各自獨立完成查詢和計數。

當監測器和訊號超過某一設定值時,閘限值可以用來追蹤監測器和訊號。當訊號和監測器數值超過設定範圍時(稱為‘打開’值),閘限值就被啟動。此外,還要特定另外一個範圍(稱為‘關閉’值),只有處於關閉值範圍內才能使閘限無效。當監測值接近閘限值並在不斷上下浮動時,必須提供滯後效應來避免產生大量的閘限事件。

監測器的實現

要想在驅動器中實現監測器,只需對RMON程式進行一些簡單的調用即可。圖1提供了實現光纖數據分散式介面(FDDI)中接收數據包的計數監測器的程式碼片段。

設計師必須製作基本的監測器和該監測器的一個實例。實例標識符對每個實例來說必須是唯一的整數。圖1所示程式碼假設系統中只有一塊FDDI卡,更通常的做法是一塊卡實現一個實例,而不是一個驅動器一個實例。

圖2中的程式透過閱讀上述實現的監測程式來檢查數據包速率是否超過預先定義好的閘限。

資源監測器

資源監測器為RMON提供另外一種監測子系統,對於Linux作業系統中的任何配置子系統來說,它能對統計值、閘限值和量規值標記提供一致的計畫性存取。資源監測器的結構主要由下面四部份組成:

用戶程式(consumer):利用計畫性存取的Linux應用程式。


資源監測器庫:用戶程式用於監測存取的介面。


資源監測後台程式(resourcemonitord):用於管理消費設備監測請求,並提供對統計值的連續監測的執行進程。


子系統監測庫:後台程式用來查詢統計值的特定子系統存取方法

資源監測器依賴於Linux事件記錄系統,該記錄系統提供能夠記錄所有系統事件的客戶應用。無論何時,只要規則評估(rule evaluation)觸發統計監測器,它都會產生事件記錄,資源監測器可以使用事件記錄系統提供的介面,同時資源監測器還提供了一種查詢系統中可用統計數據的方法(稱為發現)。

資源監測器也有一定的侷限性。首先,Resourcemonitord需要輪詢資源,因此資源監測並不是‘即時的’;其次,支援完全獨特的標識符需要使用EXT2文件特殊系統庫和頭包。

使用資源監測器

資源監測器初次安裝時沒有默認統計值需要監測,因此需要在驅動器原始程式碼或用戶應用程式碼中增加統計值。用於資源監測器的API完整描述(包括所需文件)已包含在Resourcemonitord包中。用戶還需要配置並執行Resourcemonitord才能利用資源監測器,這樣對系統統計值的資源監測功能就可以透過子系統庫實現。資源監測器對Unix域套接字(domain socket)的使用會限制對本地資源(即同一節點上的資源)的監測。

作者:John Mehaffey


高可用性結構工程師


MontaVista Software公司


Email: mehaf@mvista.com




投票數:   加入我的最愛
我來評論 - 滿足電信業等級性能要求的Linux系統資...
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首