OpenLava極簡用戶教程


Openlava是什么

Openlava脫胎於IBMlsf(兩者命令和用法基本相同),是一個免費、開源的工作負載調度程序,支持HPC(高性能計算),是IC應用環境下主流的任務分發和調度工具。

 

 

Openlava術語:

使用openlava我們需要了解如下基本概念:

- Job

任務,用戶工作的一個抽象,對應着一條任務指令。

- Host

機器,任務分發和任務執行的機器。

- Queue

隊列,多個Host(機器)組成一個隊列,用於為指定類型的任務(Job)提供一組資源池。

 

其中Host分為如下三類:

- Execution Host

計算節點,用於接收並執行任務。

- Submission Host

任務分發節點,一般和Execution Host是分開的,僅用於分發任務,不接收和執行任務。

- Master Host

主控節點,一般和Execution HostSubmission Host都是分開的,僅用於收集負載和狀態信息,管理任務。

 

 

 

Openlava命令:

常用基本命令

基本命令

用法

bsub

提交任務到openlava

bjobs

查看任務狀態和基本信息

bkill

殺死未完成的任務

bqueues

查看隊列狀態和基本信息

bhosts

查看機器狀態及基本信息

lshosts

查看機器資源狀態

lsload

查看機器負載狀態

 

- bsub

%bsub -q [queueName] : 指定隊列,如果不指定,則任務會提交到默認隊列(一般是normal)。

%bsub -m [hostName] : 指定機器,任務將會被提交到指定的機器上運行(需要確保機器在當前隊列中)。

%bsub -P [projectName] : 指定項目,一般用於標識和統計。

%bsub -Is : 投遞任務的時候用shell模式啟動一個終端,並將任務投遞到上面以交互式運行。這種模式一般用於啟動帶圖形界面的工具,啟動需要交互式的工具,將標准輸出打印到當前窗口,或者為了阻塞式運行任務(任務運行期間bsub不退出)。

%bsub -o [fileName] : 保存任務的標准輸出到指定的文件,這個模式和-Is相沖突,但是可以和-e疊加使用。

%bsub -e [fileName] : 保存任務的標准錯誤到指定的文件,這個模式和-Is相沖突,但是可以和-o疊加使用。

%bsub -n [number] : 指定為當前任務保留多少cpu處理器。

%bsub -R [resourceString] : 指定為當前任務的資源需求。

 

示例:

當前任務為virtuoso(圖形界面), 任務投遞到隊列GUI,所屬項目為ABC,預計需要4cpu核(在同一台機器)和10G內存,則任務投遞方式為:

bsub  -q GUI  -P ABC  -Is  -n 4  -R span[hosts=1] rusage[mem=10240]  virtuoso

當前任務為liberate,任務投遞到默認隊列,所屬項目為ABC,需要保存標准輸出和標准錯誤,預計1cpu核足夠, 要求投遞的機器剩余內存大於100G,剩余swap大於100G,剩余tmp空間大於30G,則任務投遞方式為:

bsub  -P ABC  -o lsf.log  -e lsf.log  -R “select[mem>=102400 && swap>=102400 && tmp>=30720]”  liberate liberate.tcl

 

- bjobs

%bjobs : 查看當前用戶所有的未完成job

%bjobs -a : 查看當前用戶在一段時間內所有的job,包括已完成和未完成的job

%bjobs -UF [jobId] : 查看指定job的詳細信息。

 

- bkill

%bkill 0 : 殺死當前用戶所有的job

%bkill -r [jobId] : 強制殺死指定的job

 

- bqueues

%bqueues : 查看所有隊列的job狀態。

 

- bhosts

%bhosts : 查看所有機器的job狀態。

 

- lshosts

%lshosts : 查看所有機器的資源狀況。

 

- lsload

%lsload : 查看所有機器的負載狀況。

 

 

擴展知識

1. 從隊列詳細信息我們能夠到什么

MAX : 隊列的理論最大slots可用數目,此隊列最多可以占用60 slots

JL/U : 隊列個人slots限制,每個人在這個隊列中最多可以占用5 slots

NJOBS/PEND/RUN/SSUSP/USUSP/RSV : 當前隊列上的作業情況。

RUNLIMIT : 隊列的運行時間限制,10080 min7天,隊列上的任務運行時間達到7天會被kill掉。

USERS : 哪些用戶或者用戶組可以使用這個隊列。

HOSTS : 哪些機器或者機器組在這個隊列中。

 

2. 從任務詳細信息中我們可以得到什么

對於RUN/DONE/EXIT狀態的job,我們可以從job的詳細信息中獲取:

任務的分發參數,包括Project, Queue, Command, Processors Requested, Requested Resources等。

機器信息,包括投遞機器(Submitted from)和執行機器(Dispatched to)。

時間信息,包括投遞時間和執行時間。

用戶信息(User)。

目錄信息(CWD)。

有些job還可以看到資源用量信息,包括CPU time, MEM, SWAP

 

對於PEND狀態的job我們則可以額外獲取PENDING REASONS”這一重要信息。

Openlava的用戶經常有這種困惑,為什么我的job投遞出去,但是總是PEND的狀態跑不起來?一般而言常見的PEND原因無非以下幾種:

Limits on the number of job slots that are configured for a queue, a host, or a user

運行job的數目達到了queue設置的上限。
AvAIlability of the specified resources

沒有機器滿足指定的資源條件。
Job dependency and pre-execution conditions

Job的依賴關系不被滿足。

Relative priority to other users and jobs

優先級低。

Start time that is specified by the user when the job is submitted

用戶指定了job開始時間(開始時間之前都是PEND的狀態)
Load conditions on qualified hosts

不滿足機器上的載入條件。
Dispatch windows during which the queue can dispatch and qualified hosts can accept jobs

queue設置了調度時間窗口,調度窗口之內job都是PEND的狀態。
Run windows during which jobs from the queue can run

queue設置了運行時間窗口,時間窗口之外job都是PEND的狀態。

 


 

References:

https://www.huaweicloud.com/articles/557544cc47d713b2acfb5cfb0f04c87f.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM