日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux操作系統(tǒng)高性能集群監(jiān)控管理之道

監(jiān)控是集群管理的核心任務(wù) 。監(jiān)控?cái)?shù)據(jù)可用于調(diào)度任務(wù)、負(fù)載平衡、向管理員報(bào)告軟硬件故障 , 并廣泛地控制系統(tǒng)使用情況 。監(jiān)控信息必須在不影響集群性能的情況下獲得 。本文將討論使用/proc文件系統(tǒng)和Java來獲得監(jiān)控?cái)?shù)據(jù)的方法 。
【Linux操作系統(tǒng)高性能集群監(jiān)控管理之道】Java在Linux集群中的應(yīng)用
Java技術(shù)為集群管理開發(fā)者提供了許多解決問題的辦法 。Java是動(dòng)態(tài)、靈活、可移植的 , 這些不尋常的特征使得它成為了在異構(gòu)網(wǎng)絡(luò)及平臺上構(gòu)造集群管理的理想基礎(chǔ) 。
Java具有廣泛的例程庫 , 很容易處理IP協(xié)議 , 如TCP、UDP , 并可在multi-homed主機(jī)上進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì) , 用它創(chuàng)建網(wǎng)絡(luò)連接比用C或C++更容易 。通過Java本地接口(JNI) , 運(yùn)行在Java 虛擬機(jī)(JVM)內(nèi)的Java代碼能夠與用其它語言編寫的應(yīng)用及庫文件相互操作并匯編 。
在構(gòu)造集群監(jiān)控和管理時(shí) , Java早已是一個(gè)可選的語言 。然而 , Java語言通常只被用于系統(tǒng)的前端或集群主機(jī)部分 , 而將用C 語言編寫的守護(hù)進(jìn)程安裝在集群結(jié)點(diǎn)上 。盡管Java程序設(shè)計(jì)語言提供了許多優(yōu)點(diǎn) , 但是 , 對于高性能集群監(jiān)控 , Java能夠有效地替換運(yùn)行在每個(gè)結(jié)點(diǎn)上的C 語言守護(hù)進(jìn)程嗎?這將是本文討論的重點(diǎn) 。
高性能監(jiān)控
監(jiān)控Linux集群工具傳統(tǒng)上以秒為測量頻率來提供有限量的數(shù)據(jù) 。而高性能集群監(jiān)控被定義為“以intrasecond為測量頻率 , 從結(jié)點(diǎn)有效地采集數(shù)據(jù)的能力 。當(dāng)涉及較大集群時(shí) , 監(jiān)控軟件的低效率問題就變得更加嚴(yán)重 , 這是因?yàn)樗\(yùn)行的應(yīng)用軟件必須互相協(xié)調(diào)或共享全局資源 。
在一個(gè)結(jié)點(diǎn)上的阻隔沖突(Interference)能影響其它結(jié)點(diǎn)上作業(yè)的運(yùn)行 。例如 , 一個(gè)MPI作用需要與所有參與的結(jié)點(diǎn)同步 。一種解決辦法是收集少量的數(shù)據(jù) , 并以小頻率傳輸 。然而 , 如果是高性能監(jiān)控 , 這種解決辦法是不可接受的 , 因?yàn)橛休^重利用率的集群應(yīng)該被頻繁持續(xù)地監(jiān)控 。本地作業(yè)調(diào)度器必須能夠基于資源使用情況做快速?zèng)Q策 。管理員經(jīng)常希望收到緊急事件的立即通知 , 并希望觀察到歷史趨勢數(shù)據(jù) , 如果集群不能被頻繁持續(xù)地監(jiān)控 , 那么這些要求是不可能實(shí)現(xiàn)的 。因此 , 必須采取一些措施 , 如使用更有效的算法、增加傳輸?shù)牟⑿行?、提高傳輸協(xié)議及數(shù)據(jù)格式的效率、減少冗余等 。
在跟蹤運(yùn)行中的資源使用情況時(shí) , 壓縮Profiling應(yīng)用有助于調(diào)試程序或優(yōu)化程序 。對一個(gè)給定的應(yīng)用而言 , 像存儲器、網(wǎng)絡(luò)、CPU這樣動(dòng)態(tài)資源的使用可能快速地改變著 , 為了能夠觀察應(yīng)用是怎樣使用這些資源的 , 一種可能的辦法是使用高頻率的監(jiān)控 。
即使用戶對高頻率監(jiān)控沒有興趣 , 如果算法是有效的 , 不管監(jiān)控頻率是多少 , 它也將消費(fèi)很少的資源 。在異構(gòu)集群中這種效率將更重要 , 用戶的作業(yè)可以被分散到較快的及較慢的結(jié)點(diǎn)上 , 慢的結(jié)點(diǎn)需要全部CPU來跟上較快的結(jié)點(diǎn)并與之同步 。一個(gè)監(jiān)控程序花費(fèi)在較慢結(jié)點(diǎn)上的CPU時(shí)間是作業(yè)的關(guān)鍵路徑 。
監(jiān)控階段
集群監(jiān)控主要消耗CPU周期與網(wǎng)絡(luò)帶寬這兩個(gè)重要資源 。然而 , 資源消費(fèi)問題與這兩個(gè)資源是根本不同的 。CPU利用問題對結(jié)點(diǎn)而言是完全本地化的問題 , 可通過創(chuàng)建有效的收集與合并算法來解決 。網(wǎng)絡(luò)帶寬是共享資源 , 是規(guī)模問題 , 可以通過最小化網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量來解決 。
為了解決這兩個(gè)問題 , 我們將集群監(jiān)控分為三個(gè)階段:收集、合并、傳輸 。收集階段負(fù)責(zé)從操作系統(tǒng)裝載數(shù)據(jù)、分析數(shù)據(jù)值 , 并存儲數(shù)據(jù) 。合并階段負(fù)責(zé)將來自多個(gè)數(shù)據(jù)源的數(shù)據(jù)合在一起 , 決定數(shù)據(jù)值是否改變并過濾它們 。傳輸階段負(fù)責(zé)壓縮并傳輸數(shù)據(jù) 。本文集中討論Linux集群監(jiān)控的收集階段 。

推薦閱讀