歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

高性能Linux集群監控之道

監控是集群管理的核心任務。監控數據可用於調度任務、負載平衡、向管理員報告軟硬件故障,並廣泛地控制系統使用情況。監控信息必須在不影響集群 性能 的情況下獲得。本文將討論使用/proc文件系統和Java來獲得監控數據的方法。 Java在Linux集群中的應用 Java  

監控是集群管理的核心任務。監控數據可用於調度任務、負載平衡、向管理員報告軟硬件故障,並廣泛地控制系統使用情況。監控信息必須在不影響集群性能的情況下獲得。本文將討論使用/proc文件系統和Java來獲得監控數據的方法。

Java在Linux集群中的應用

Java技術為集群管理開發者提供了許多解決問題的辦法。Java是動態、靈活、可移植的,這些不尋常的特征使得它成為了在異構網絡及平台上構造集群管理的理想基礎。

Java具有廣泛的例程庫,很容易處理IP協議,如TCP、UDP,並可在multi-homed主機上進行網絡程序設計,用它創建網絡連接比用C或C++更容易。通過Java本地接口(JNI),運行在Java 虛擬機(JVM)內的Java代碼能夠與用其它語言編寫的應用及庫文件相互操作並匯編。

在構造集群監控和管理時,Java早已是一個可選的語言。然而,Java語言通常只被用於系統的前端或集群主機部分,而將用C 語言編寫的守護進程安裝在集群結點上。盡管Java程序設計語言提供了許多優點,但是,對於高性能集群監控,Java能夠有效地替換運行在每個結點上的C 語言守護進程嗎?這將是本文討論的重點。

高性能監控

監控Linux集群工具傳統上以秒為測量頻率來提供有限量的數據。而高性能集群監控被定義為“以intrasecond為測量頻率,從結點有效地采集數據的能力”。當涉及較大集群時,監控軟件的低效率問題就變得更加嚴重,這是因為所運行的應用軟件必須互相協調或共享全局資源。

在一個結點上的阻隔沖突(Interference)能影響其它結點上作業的運行。例如,一個MPI作用需要與所有參與的結點同步。一種解決辦法是收集少量的數據,並以小頻率傳輸。然而,如果是高性能監控,這種解決辦法是不可接受的,因為有較重利用率的集群應該被頻繁持續地監控。本地作業調度器必須能夠基於資源使用情況做快速決策。管理員經常希望收到緊急事件的立即通知,並希望觀察到歷史趨勢數據,如果集群不能被頻繁持續地監控,那麼這些要求是不可能實現的。因此,必須采取一些措施,如使用更有效的算法、增加傳輸的並行性、提高傳輸協議及數據格式的效率、減少冗余等。

在跟蹤運行中的資源使用情況時,壓縮Profiling應用有助於調試程序或優化程序。對一個給定的應用而言,像存儲器、網絡、CPU這樣動態資源的使用可能快速地改變著,為了能夠觀察應用是怎樣使用這些資源的,一種可能的辦法是使用高頻率的監控。

即使用戶對高頻率監控沒有興趣,如果算法是有效的,不管監控頻率是多少,它也將消費很少的資源。在異構集群中這種效率將更重要,用戶的作業可以被分散到較快的及較慢的結點上,慢的結點需要全部CPU來跟上較快的結點並與之同步。一個監控程序花費在較慢結點上的CPU時間是作業的關鍵路徑。

監控階段

集群監控主要消耗CPU周期與網絡帶寬這兩個重要資源。然而,資源消費問題與這兩個資源是根本不同的。CPU利用問題對結點而言是完全本地化的問題,可通過創建有效的收集與合並算法來解決。網絡帶寬是共享資源,是規模問題,可以通過最小化網絡上傳輸的數據量來解決。

為了解決這兩個問題,我們將集群監控分為三個階段:收集、合並、傳輸。收集階段負責從>操作系統裝載數據、分析數據值,並存儲數據。合並階段負責將來自多個數據源的數據合在一起,決定數據值是否改變並過濾它們。傳輸階段負責壓縮並傳輸數據。本文集中討論Linux集群監控的收集階段。

1.收集階段

Linux有幾種方法來進行系統統計,每種方法都各有其優缺點。

◆ 使用現有的工具

標准及非標准工具能執行一個或多個收集、合並及傳輸階段,如rstatd或SNMP工具,然而標准的rstat後台程序提供的信息是有限的,速度慢而且效率低。

◆ 內核模塊

幾個系統監控工程利用

Copyright © Linux教程網 All Rights Reserved