lsfMonitor : LSF數據採集和信息展示工具

       IBM®Platform™LSF®是功能強大的工作負載管理平臺,適用於苛刻的分佈式HPC環境。 它提供了一套全面的、智能的、由策略驅動的調度功能,使您能夠利用所有計算基礎架構資源並確保最佳的應用程序性能。

       LSF功能強大,是集成電路設計行業具有統治地位的集羣管理調度系統。同免費開源的openlava和SGE等相比,LSF在穩定性上具有極大的優勢;同流行的slurm及PBS相比,LSF則在EDA兼容方面具有不可替代性。

 

       對LSF的用戶來說,除了最常用的任務分發功能,他們往往需要記住如下指令以獲取必要的集羣、機器及任務信息。

bjobs : 獲取任務信息。

bhosts :獲取機器靜態及動態信息。

lshosts :獲取機器靜態信息。

lsload :獲取機器負載信息。

bqueues :獲取隊列信息。

 

       同時,用戶也常常因爲一些更爲複雜的應用場景感到困惑。

  1. 我的任務爲什麼會PEND?(pend reason獲取)
  2. 我的任務申請的內存資源合理嗎?(reserve memory & used memory)
  3. 我的任務爲什麼會失敗?(reserved memory << used memory是重要誘因之一)
  4. 我(或者指定的用戶/機器/隊列)有哪些jobs?(jobs獲取及基本信息展示)
  5. 集羣有哪些機器?負載狀況如何?(機器及其靜態/動態信息獲取)
  6. 集羣有哪些隊列?負載狀況如何?(隊列及其job負載狀況獲取)
  7. 機器資源(cpu/memory)的歷史使用狀況。(用來做機器及任務異常原因分析)
  8. … …

 

       IBM本身提供了RTM等額外套件輔助LSF信息獲取和監控,但是價格昂貴且使用略顯繁瑣,對於LSF的普通用戶來說,lsfMonitor則是一個簡單易用的替代方案,它是一個免費開源的LSF數據採集和信息展示工具,用以滿足用戶如上的信息獲取需求。

 

       後面我們從如下方面展開介紹一下lsfMonitor。

  • 下載安裝
  • 數據採集
  • 信息展示

 

一、下載安裝

       您可以從https://github.com/liyanqing1987/lsfMonitor上獲得lsfMonitor的源碼。

       Code -> Download ZIP可以直接下載zip格式的安裝包。

 

       如果Linux系統可以聯網,也可以直接通過git clone的方式直接從github下載源碼包。

       Code -> HTTPS可以獲取源碼包的clone地址。

       地址爲 https://github.com/liyanqing1987/lsfMonitor.git

 

       將lsfMonitor源碼包拷貝到安裝目錄INSTALL_PATH。(最好採用root賬號,下同)

 

       進入安裝目錄,確認安裝文件完整。

 

       確認機器上的python版本爲python3。(最好爲python3.5版本及以上,極力推薦用anaconda3版本的python,可以省卻依賴庫的安裝)

 

       採用命令python install.py來安裝。

 

       如果當前的python版本不是anaconda3,可能還需要通過pip install -r requirements.txt文件來安裝依賴庫。(Anaconda3自帶完全版本的python庫,則不需要安裝。)

 

       建議把lsfMonitor安裝路徑中的lsfMonitor/monitor/bin路徑設置到環境變量PATH中,這樣就可以直接引用lsfMonitor的核心工具。

       如果是bash,在~/.bashrc中添加 export PATH=/ic/tools/lsfMonitor/monitor/bin:$PATH。

       如果是csh,在~/.cshrc中添加 setenv PATH /ic/tools/lsfMonitor/monitor/bin:$PATH。

 

       lsfMonitor有兩個核心程序,bsample.pybmonitor

       其中bsample.py用於進行LSF數據採集,bmonitor用於進行LSF信息展示,建議將bmonitor軟鏈接到LSF bsub工具路徑下,這樣可以直接調用bmonitor。

 

    執行bmonitor啓動lsfMonitor的核心信息展示程序。

 

       bmonitor圖形界面啓動,lsfMonitor安裝成功。

 

二、數據採集

       前面提到,lsfMonitor是一個開源免費的LSF數據採集和信息展示工具,它需要採集一些LSF的歷史數據以供信息展示使用,bsample.py負責數據採集功能。

       bsample.py位於<INSTALL_PATH>/lsfMonitor/monitor/bin下面。其工具手冊爲<INSTALL_PATH>/lsfMonitor/docs/bsample.txt。

 

       如下是bsample.py的幫助信息。

====

usage: bsample.py [-h] [-j] [-q] [-H] [-l] [-u] [-i INTERVAL]

 

optional arguments:

  -h, --help            show this help message and exit

  -j, --job             Sample running job info with command "bjobs -u all -r -UF".

  -q, --queue           Sample queue info with command "bqueues".

  -H, --host            Sample host info with command "bhosts".

  -l, --load            Sample host load info with command "lsload".

  -u, --user            Sample user info with command "busers".

  -i INTERVAL, --interval INTERVAL

                        Specify the sampling interval, unit is second.

                        Sampling only once by default".

====

 

       它支持採集job/queue/host/load/user五種類型的數據,並將獲取的數據保存到sqlite3數據庫中。

       它支持守護進程模式(即程序一直開啓不退出),此時可以用-i指定採樣間隔,但是我們更建議採用crontab的方式做週期性數據採集,如下是一個推薦的crontab demo。

       (請將變量BSUB_PATH和INSTALL_PATH替換爲路徑)

 

====

# Sampling job/queue/load information for lsfMonitor (Frequency : 5 minutes)

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:<BSUB_PATH>

*/5 * * * * [INSTALL_PATH]/lsfMonitor/monitor/bin/bsample.py -j

*/5 * * * * [INSTALL_PATH]/lsfMonitor/monitor/bin/bsample.py -q

*/5 * * * * [INSTALL_PATH]/lsfMonitor/monitor/bin/bsample.py -l

====

 

       當前bmonitor工具只需要用到job/queue/load的數據,但是bsample.py也可以採集host/user的信息,需要的話也可以啓動相關的crontab來採集。

 

       <INSTALL_PATH>/lsfMonitor/monitor/conf/config.py用於配置工具用到的環境變量installPath和dbPath,其中installPath指工具安裝路徑,安裝時會自動設置,不要更改,dbPath指的是數據庫存儲路徑,默認爲dpPath = <INSTALL_PATH>/lsfMonitor/db,出於數據分離的目的,也可以把這個路徑手工修改爲自己創建的數據庫路徑。

 

       如下是手工執行採樣腳本的效果。

 

       採樣job數據。

 

           採樣queue數據。

 

       採樣load數據。

 

       如果數據採樣過程中遇到任何錯誤(比如權限問題),必須及時解決,以防止數據缺失或錯誤。

 

三、信息展示

       工具bmonitor負責LSF信息展示功能,它位於<INSTALL_PATH>/lsfMonitor/monitor/bin下面。其工具手冊爲<INSTALL_PATH>/lsfMonitor/docs/bmonitor.txt。

 

       如下是bmonitor的幫助信息。

====

usage: bmonitor [-h] [-j JOBID]

 

optional arguments:

  -h, --help            show this help message and exit

  -j JOBID, --jobid JOBID

                        Specify the jobid which show it's information on job tab.

====

 

       它支持指定jobid並直接展示其任務信息。

 

       bmonitor是一個純圖形界面工具,包含五個頁面 JOB/JOBS/HOSTS/QUEUES/LOAD。

JOB    : 展示指定job的信息及其內存用量變化曲線。

JOBS   : 展示指定條件下的所有job及其基本信息。

HOSTS  : 展示指定條件下的所有機器及其基本信息。

QUEUES : 展示所有的隊列及隊列的基本信息和queue-job數目變化曲線。

LOAD   : 展示指定機器的ut/mem變化曲線。

 

       後面是針對bmonitor圖形界面及用法的具體介紹。

 

3.1 整體界面及菜單欄

       執行bmonitor打開的GUI界面首頁如下。

 

       其中菜單欄包含File/Setup/Help三項。

File  -> Eixt                  : 退出。

Setup -> Fresh                : 刷新JOBS/HOSTS/QUEUES界面(一次)。

Setup -> Periodic Fresh (1 min)  : 週期刷新JOBS/HOSTS/QUEUES界面(每分鐘)。

Help  -> About lsfMonitor      : 展示關於lsfMonitor的信息。

 

       其中About信息爲lsfMonitor的介紹,可以在<INSTALL_PATH>/lsfMonitor/README中查看其內容。

 

3.2 JOB頁面

       JOB頁面顯示一個JOB的基本信息。

       如下是JOB頁面的一個示例,在Job輸入框輸入jobid(job需要正在運行或者運行完畢不久),點擊Check按鈕,就可以在下方看到job的簡略和詳細信息,同時可以在右側看到job生命週期內的memory用量變化曲線。

 

       同時這個曲線是可以放大和移動的,點擊放大鏡按鈕可以查看局部細節,將鼠標移到曲線圖上可以查看點的XY座標,點擊小房子按鈕可以恢復原狀。

 

3.3 JOBS頁面

       JOBS頁面默認顯示所有正在RUN的job及其基本信息。

 

       也可以通過選擇User/Status/Queue/Host來得到限定條件下的jobs。

 

       如下是JOBS頁面的一些行爲:

  1. 點擊Job列的jobid,會跳轉到JOB頁面,顯示選中job的信息。
  2. 如果job的Mem值大於Rusage值,或者Rusage沒有設,則job對應的Mem項會標紅。
  3. 點擊表格title,當列會按照數字或者字母排序。

 

PS:

  1. 部分job的Mem值缺失,這是lsf的bug,用bjobs -u all -r -UF抓取所有job詳細信息的時候,部分job的MEM信息會缺失。
  2. 限制於圖形界面大小,Command列往往顯示不全,點擊右上角的最大化按鈕,放大圖形界面後就可以看到Command全貌了。

 

3.4 HOSTS頁面

       HOSTS頁面默認顯示所有的機器及其基本的靜態和動態信息。

 

       也可以通過選擇Queue來得到指定隊列的hosts。

 

       如下是HOSTS頁面的一些行爲:

  1. 點擊Host列的機器名或者Njobs列的數字,會跳轉到JOBS頁面,顯示對應機器上的所有jobs。
  2. 如果機器的Status變爲unreach/unavail/closed_LIM,則機器對應的Status項會標紅。
  3. 如果機器的Ut(cpu利用率)的值大於90,則機器對應的Ut項會標紅。
  4. 如果機器的Mem(可用內存)跟Maxmem的比值小於0.1,則機器對應的Mem項會標紅。
  5. 如果機器的Tmp(/tmp空間大小)爲0,則機器對應的Tmp項會標紅。
  6. 點擊表格title,當列會按照數字或者字母排序。

 

3.5 QUEUES頁面

       QUEUES頁面顯示所有的queues及其基本的隊列信息。

 

       如下是QUEUES頁面的一些行爲:

  1. 點擊QUEUE列的隊列名,會顯示對應queue的詳細信息和歷史PEND/RUN slots數目變化曲線。。
  2. 點擊PEND列的數字,會跳轉到JOBS頁面,顯示對應queue的所有PEND jobs。
  3. 點擊RUN列的數字,會跳轉到JOBS頁面,顯示對應queue的所有RUN jobs。
  4. 如果queue PEND的slots數目大於0,對應的PEND數字會標紅。

 

3.6 LOAD頁面

       LOAD頁面用於展示指定機器的cpu和memory歷史用量變化曲線。

 

       尤其需要關注如下這種機器的ut值和available mem均爲0的情況,一般來說這種情況意味着機器異常(宕機或者LSF服務丟失)。

 

       主要關注內存用量,可以放大關鍵節點得到機器異常的時間點。

 

       由上可知,機器ciccmp256可能在2020-11-06 15:15左右宕機了,之後再沒有采集到任何有效的cpu和memory使用數據。

 

備註:

       歡迎大家使用lsfMonitor,如果遇到任何bug,或者有好的enhancement需求,可以聯繫[email protected]

       至於lsf的簡易安裝教程,則請參考https://my.oschina.net/liyanqing/blog/4694794。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章