2015-12-16 136 views
-1

我正在使用IBM LSF並嘗試在特定時間段內獲取使用情況統計信息。我發現bhist可以完成這項工作,但簡寫形式bhist輸出並不顯示我需要的所有字段。如何解析bhist日誌

我想知道的是:

  1. 是bhist的輸出字段定製?我需要的字段是:

    • <作業ID>
    • <用戶>
    • <隊列>
    • < JOB_NAME>
    • <項目名稱>
    • < job_description>
    • < submission_time >
    • < pending_time後>
    • < RUN_TIME>
  2. 如果是不可能的,長形式(bhist -l)輸出顯示我需要的一切,但格式是難以操縱。我粘貼了以下格式的示例。

例如,記錄之間的行號是不固定的,並且在每個事件的自動換行可能會破壞行的字我試圖掃描的中間。如何使用sedawk解析此格式?

JobId <1531>, User <user1>, Project <default>, Command< example200> 
Fri Dec 27 13:04:14: Submitted from host <hostA> to Queue <priority>, CWD <$H 
        OME>, Specified Hosts <hostD>; 
Fri Dec 27 13:04:19: Dispatched to <hostD>; 
Fri Dec 27 13:04:19: Starting (Pid 8920); 
Fri Dec 27 13:04:20: Running with execution home </home/user1>, Execution CWD 
        </home/user1>, Execution Pid <8920>; 
Fri Dec 27 13:05:49: Suspended by the user or administrator; 
Fri Dec 27 13:05:56: Suspended: Waiting for re-scheduling after being resumed 
        by user; 
Fri Dec 27 13:05:57: Running; 
Fri Dec 27 13:07:52: Done successfully. The CPU time used is 28.3 seconds. 

Summary of time in seconds spent in various states by Sat Dec 27 13:07:52 1997 
PEND PSUSP RUN USUSP SSUSP UNKWN TOTAL 
5  0  205 7  1  0  218 
------------------------------------------------------------ 
    .... repeat 
+2

因爲它有點寬泛。嘗試[編輯]顯示你的嘗試,你想要的和你面臨的問題。 – fedorqui

+1

正確的解決方案將是awk(假設沒有現有的面向應用程序的工具)。 sed是用於簡單替換個別行的,就是這些 - 請記住,不管是什麼古怪的字符組合,人們都會陷入sed命令行並投擲你。也許你不明白@fedorquis評論的重要部分 - 你必須至少向我們展示預期的輸出結果,因爲我們有機會理解你的需求。 –

回答

0

長表單輸出很難解析。我知道bjobs在較舊的LSF版本中可以選擇無格式輸出(-UF),這使得它更容易一些,而最新版本的LSF允許您自定義以-o以短格式輸出打印的列。

不幸的是,這些選項都不適用於bhist。歷史信息的唯一真正的可能性是:

  1. 圖了一些方法來解析bhist -l - 不切實際的,也許甚至沒有可能的,因爲你已經發現不一致的格式。
  2. 編寫一個C程序,使用LSF API來做你想做的事情,該函數公開bhist本身用來解析lsb.events文件的函數。這是存儲有關LSF羣集的所有歷史信息的文件,並且是bhist讀取的內容以生成它的輸出。
  3. 如果C不是您的選擇,那麼您可以嘗試編寫腳本來直接解析文件lsb.events - 格式在配置參考中進行了說明。這很難,但並非不可能。 Here是LSF 9.1.3的相關文件。

我個人的建議是#2 - 你要找的功能是lsb_geteventrec()。您基本上每次閱讀lsb.events中的每一行,並提取所需的信息。

0

我添加了第二個答案,因爲它可能會幫助您解決問題,而無需實際編寫自己的解決方案(具體取決於您之後的使用情況統計信息)。

LSF已經有一個名爲bacct的實用程序,它計算並打印出各種有關按各種標準過濾的歷史LSF作業的使用統計信息。

例如,若要獲取有關被派往/完成/時間0/1/2和時間1間提交的作業彙總使用統計數據,你可以(分別)使用方法:

bacct -D time0,time1 
bacct -C time0,time1 
bacct -S time0,time1 

的統計信息提交的特定用戶的作業:

bacct -u <username> 

的統計信息提交給特定隊列作業:

bacct -q <queuename> 

這些選項可以組合爲好,因此,例如,如果你想了解某個特定項目提交併完成一個特定的時間窗口內的作業的統計信息,您可以使用:

bacct -S time0,time1 -C time0,time1 -P <projectname> 

輸出提供了一些總結所有作業符合給定條件,像這樣的信息:

$ bacct -u bobbafett -q normal 

Accounting information about jobs that are: 
    - submitted by users bobbafett, 
    - accounted on all projects. 
    - completed normally or exited 
    - executed on all hosts. 
    - submitted to queues normal, 
    - accounted on all service classes. 
------------------------------------------------------------------------------ 

SUMMARY:  (time unit: second) 
Total number of done jobs:  0  Total number of exited jobs: 32 
Total CPU time consumed:  46.8  Average CPU time consumed:  1.5 
Maximum CPU time of a job:  9.0  Minimum CPU time of a job:  0.0 
Total wait time in queues: 18680.0 
Average wait time in queue: 583.8 
Maximum wait time in queue: 5507.0  Minimum wait time in queue: 0.0 
Average turnaround time:  11568 (seconds/job) 
Maximum turnaround time:  43294  Minimum turnaround time:  40 
Average hog factor of a job: 0.00 (cpu time/turnaround time) 
Maximum hog factor of a job: 0.02  Minimum hog factor of a job: 0.00 
Total Run time consumed: 351504  Average Run time consumed: 10984 
Maximum Run time of a job: 1844674  Minimum Run time of a job:  0 
Total throughput:    0.24 (jobs/hour) during 160.32 hours 
Beginning time:  Nov 11 17:55  Ending time:   Nov 18 10:14 

這個命令也有很長的形式輸出,可提供有關每個作業一些bhist -l樣的信息可能會有點容易解析(雖然還沒有全部那很簡單):

$ bacct -l -u bobbafett -q normal 

Accounting information about jobs that are: 
    - submitted by users bobbafett, 
    - accounted on all projects. 
    - completed normally or exited 
    - executed on all hosts. 
    - submitted to queues normal, 
    - accounted on all service classes. 
------------------------------------------------------------------------------ 

Job <101>, User <bobbafett>, Project <default>, Status <EXIT>, Queue <normal>, 
        Command <sleep 100000000> 
Wed Nov 11 17:37:45: Submitted from host <endor>, CWD <$HOME>; 
Wed Nov 11 17:55:05: Completed <exit>; TERM_OWNER: job killed by owner. 

Accounting information about this job: 
    CPU_T  WAIT  TURNAROUND STATUS  HOG_FACTOR MEM SWAP 
     0.00  1040   1040  exit   0.0000  0M  0M 
------------------------------------------------------------------------------ 
...