日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]監(jiān)控是集群管理的核心任務監(jiān)控數據可用于調度任務負載平衡向管理員報告軟硬件故障并廣泛地控制系統使用情況監(jiān)控信息必須在不影響集群性能的情況下獲得本文將討論使用/proc文

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

Java在Linux集群中的應用

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

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

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

高性能監(jiān)控

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

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

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

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

監(jiān)控階段

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

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

收集階段

Linux有幾種方法來進行系統統計每種方法都各有其優(yōu)缺點

◆ 使用現有的工具

標準及非標準工具能執(zhí)行一個或多個收集合并及傳輸階段如rstatd或SNMP工具然而標準的rstat后臺程序提供的信息是有限的速度慢而且效率低

◆ 內核模塊

幾個系統監(jiān)控工程利用內核模塊來存取監(jiān)控數據一般情況下這是很有效的收集系統數據的方法然而這種方法存在的問題是當主內核源內有其它改變時必須保持代碼一致性一個內核模塊可能與用戶想使用的其它內核模塊相沖突此外在使用監(jiān)控系統之前用戶必須獲得或申請模塊

◆ /proc虛擬文件系統

/proc 虛擬文件系統是一個較快的高效率執(zhí)行系統監(jiān)控的方法使用/proc的主要缺點是必須保持代碼分析與/proc 文件格式改變的同步事實表明Linux內核的改變比/proc 文件格式的改變要更頻繁所以用/proc虛擬文件系統比用內核模塊存在的問題要少

◆ 混合系統

某些監(jiān)控系統采用混合方式用內核模塊收集數據用/proc虛擬文件系統作為數據接口

合并階段

合并階段的實現可以在結點上集群管理的主機上或者分布在兩者上考慮到效率我們只采用在結點上的合并原因在于結點是監(jiān)控數據的收集器與提供者兩個或多個同時的數據請求不會引起兩次操作系統調用來收集數據而是將第一次請求獲得的數據緩存并可以提供給第二次請求調用這種方法減少了操作系統的負擔提高了監(jiān)控系統的響應性合并階段也可以用于將多個數據源的數據以相互獨立的收集速率結合因為并不是所有的數據都以同樣的速度改變或者需要以同樣的速率收集

使用在結點層上合并的另一個原因是減少了包括傳輸在內的信息量許多/proc文件既包含動態(tài)數據也包含靜態(tài)數據刪除最近一次傳輸后沒有改變的值一個結點發(fā)送的數據量可以大大地減少合并不僅除去了不經常改變的動態(tài)值的傳輸也解決了從不改變的靜態(tài)值的傳輸

傳輸階段

監(jiān)控數據幾乎總是按一個層次結構組織起來傳輸階段的任務就是將層次數據進行有效的編碼形成一種能高效傳輸的數據格式Java擁有的文件格式是存儲層次數據的有效方法并且用提供的Java APIs很容易完成SExpressions已經被認為是傳輸這種數據的另一個有效的方法

關于傳輸監(jiān)控數據普遍討論的問題是數據應該按二進制編碼還是按文本格式編碼二進制數據更容易壓縮因此也能更有效地傳輸但是當采用/proc文件系統時監(jiān)控數據通常以人們易讀的格式存儲在傳輸之前將數據轉換為二進制格式將需要更多的處理資源與時間以文本格式保留收集的數據結點資源能被用于更多非監(jiān)控性的相關工作

采用文本格式的數據將提供如下額外的益處

◆ 平臺獨立性

當監(jiān)控異構集群時機器之間數據字節(jié)指令的配置不是永遠相同的文本格式的使用在代碼方面解決了這個問題而且體系結構獨立不會影響更多的處理需求

◆ 易讀的格式

文本數據能以人們易讀的格式進行組織如果需要的話這種特征能容易地進行程序調試或允許用戶觀看數據流[!--empirenews.page--]

◆ 有效壓縮

數值數據的文本表示由來自個字節(jié)集中的字符組成而不是二進制下的個字節(jié)集它們產生的數字及模式的相對頻率允許有效地使用基于壓縮算法的字典及熵(平均信息量)

/proc虛擬文件系統

/proc虛擬文件系統(也叫procfs)是Unix操作系統所使用的虛擬文件系統的Linux實現包括Sun SolarisLinuxBSD在/proc開始時它以一個標準文件系統出現并包含與正在運行的進程IDs同樣名字的文件然而在/proc中的文件不占用磁盤空間它們存在于工作存儲器(內存)中/proc最初的目的是便于進程信息的存取但是現在在Linux中它可被內核的每一部分使用來報告某些事情

在/proc文件系統提供的成百上千的值當中我們將集中考慮集群監(jiān)控所需的最小集它們包括

◆ /proc/loadavg包含系統負載平均值;

◆ /proc/meminfo包含存儲管理統計量;

◆ /proc/net/dev包含網卡度量;

◆ /proc/stat包含內核統計量;

◆ /proc/uptime包含總的系統正常工作時間及空閑時間

每個文件提供的值的數量是不同的這些文件的完整有效值列表如下

◆ /proc/loadavg提供以下數據

秒鐘平均負載;

秒鐘平均負載;

秒鐘平均負載;

總作業(yè)數;

正在運行的作業(yè)總數

◆ /proc/meminfo提供的存儲器信息包括

活動存儲器;

不活動存儲器;

緩沖存儲器;

高速緩沖存儲器;

總的自由存儲器;

總的高位存儲器;

自由高位存儲器;

總的低位存儲器;

自由低位存儲器;

共享存儲器;

交換存儲器;

交換高速緩沖存儲器;

交換自由存儲器;

總存儲器

◆ /proc/net/dev中包括每個網卡的如下數據

接收到的字節(jié);

接收到的壓縮字節(jié);

收到的誤碼數;

收到的漏失誤碼;

收到的FIFO誤碼;

收到的幀誤碼;

收到的多播誤碼;

收到的總包數;

已傳輸的字節(jié);

已傳輸的壓縮字節(jié);

傳輸誤碼總數;

傳輸載波誤碼;

傳輸沖突誤碼;

傳輸漏失誤碼;

傳輸FIFO誤碼;

傳輸的總包數

◆ /proc/stat提供

引導時間;

上下文切換數量;

中斷總量;

進頁面總數;

出頁面總數;

進程總數;

換入總數;

換出總數;

合計CPU空閑時間;

合計CPU nice時間;

合計CPU系統時間;

合計CPU用戶時間

同時提供對每個CPU的:

單個CPU空閑時間;

單個CPU nice時間;

單個CPU系統時間;

單個CPU用戶時間

以及對每個磁盤驅動器的如下數據

單個磁盤塊讀;

單個磁盤塊寫;

單個磁盤I/O總數;

單個磁盤I/O讀;

單個磁盤I/O寫

◆ /proc/uptime中包括

系統總工作時間;

系統總空閑時間

值得注意的是每次某個/proc被讀時一個句柄函數都被內核或特有模塊調用來產生數據數據在運行中產生不管是讀一個字符還是一個大的字塊整個文件都將被重建這對效率是至關重要的一點因為使用/proc的任何系統監(jiān)控器將吞下整個文件而不是一點一點地處理它

Java提供了豐富的文件I/O類集包括基于類的流基于類的塊設備以及JSDK 提供的新的I/O庫實驗表明一般而言對基本的塊讀寫文件操作用RandomAccessFile類進行I/O是最佳的例如塊讀文件操作如下

mFile = new RandomAccessFile( "/proc/meminfo" "r" );

//以讀方式打開文件

mFileread( mBuffer ); //讀文件塊

結論

本文討論了如何將Java語言有效地用于Linux集群結點上的高性能監(jiān)控在程序設計中要注意以下方面

◆ 采用/proc文件系統;

◆ 以塊形式讀/proc文件而不是以行或字符形式;

◆ 在讀文件期間保持文件打開;

◆ 消除不必要的數據轉換;

◆ 在結點上合并數據;

◆ 以壓縮形式傳輸數據;

◆ 注意與性能問題相關的語言或庫

對高性能監(jiān)控而言內核模塊不是必要條件這點很重要因為它在Linux版本和分類之間提供了很大程度的可移植性在監(jiān)控器實現語言上有很多的選擇但是/proc文件系統的性能卻很依賴內核代碼的效率因此適當地理解有關的機制將對以任何語言編寫的監(jiān)控器性能有非常大的影響。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

CPU親和度通過限制進程或線程可以運行的CPU核心集合,使得它們只能在指定的CPU核心上執(zhí)行。這可以減少CPU緩存的失效次數,提高緩存命中率,從而提升系統性能。

關鍵字: Linux 嵌入式

在Linux系統性能優(yōu)化中,內存管理與網絡連接處理是兩大核心領域。vm.swappiness與net.core.somaxconn作為關鍵內核參數,直接影響系統在高負載場景下的穩(wěn)定性與響應速度。本文通過實戰(zhàn)案例解析這兩個...

關鍵字: Linux 內存管理

對于LLM,我使用b谷歌Gemini的免費層,所以唯一的成本是n8n托管。在使用了n8n Cloud的免費積分后,我決定將其托管在Railway上(5美元/月)。然而,由于n8n是開源的,您可以在自己的服務器上托管它,而...

關鍵字: 人工智能 n8n Linux

在Linux系統管理中,權限控制是安全運維的核心。本文通過解析/etc/sudoers文件配置與組策略的深度應用,結合某金融企業(yè)生產環(huán)境案例(成功攔截98.7%的非法提權嘗試),揭示精細化權限管理的關鍵技術點,包括命令別...

關鍵字: Linux 用戶權限 sudoers文件

Linux內核中的信號量(Semaphore)是一種用于資源管理的同步原語,它允許多個進程或線程對共享資源進行訪問控制。信號量的主要作用是限制對共享資源的并發(fā)訪問數量,從而防止系統過載和數據不一致的問題。

關鍵字: Linux 嵌入式

在云計算與容器化技術蓬勃發(fā)展的今天,Linux網絡命名空間(Network Namespace)已成為構建輕量級虛擬網絡的核心組件。某頭部互聯網企業(yè)通過命名空間技術將測試環(huán)境資源消耗降低75%,故障隔離效率提升90%。本...

關鍵字: Linux 云計算

在Linux內核4.18+和主流發(fā)行版(RHEL 8/Ubuntu 20.04+)全面轉向nftables的背景下,某電商平臺通過遷移將防火墻規(guī)則處理效率提升40%,延遲降低65%。本文基于真實生產環(huán)境案例,詳解從ipt...

關鍵字: nftables Linux

在Linux設備驅動開發(fā)中,等待隊列(Wait Queue)是實現進程睡眠與喚醒的核心機制,它允許進程在資源不可用時主動放棄CPU,進入可中斷睡眠狀態(tài),待資源就緒后再被喚醒。本文通過C語言模型解析等待隊列的實現原理,結合...

關鍵字: 驅動開發(fā) C語言 Linux

在Unix/Linux進程間通信中,管道(pipe)因其簡單高效被廣泛使用,但默認的半雙工特性和無同步機制容易導致數據競爭。本文通過父子進程雙向通信案例,深入分析互斥鎖與狀態(tài)機在管道同步中的應用,實現100%可靠的數據傳...

關鍵字: 管道通信 父子進程 Linux

RTOS :RTOS的核心優(yōu)勢在于其實時性。它采用搶占式調度策略,確保高優(yōu)先級任務能夠立即獲得CPU資源,從而在最短時間內完成處理。RTOS的實時性是通過嚴格的時間管理和任務調度算法實現的,能夠滿足對時間敏感性要求極高的...

關鍵字: Linux RTOS
關閉