LSF实践专题(19):如何设置LSF队列

不少LSF用户都有这样的疑问:应该创建几个LSF队列,每个队列该如何设置参数?

要回答这个问题,需要对LSF队列概念、参数、调度策略有一些基本了解,也要了解公司自身业务特点和资源分配需求。

我们先来看一下LSF队列的概念。LSF队列是一个资源策略组合。简单来说,LSF队列定义了“谁”能用“哪些hosts”在“什么样的限制下”来跑计算任务。一个LSF队列至少需要设置这些参数:

  • QUEUE_NAME:队列名

  • DESCRIPTION:队列描述

  • USERS:能向该队列提交作业的用户(组)

  • HOSTS:该队列可以使用的主机(组)

  • PRIORITY:队列优先级

再加上一些资源使用限制和调度策略,就是常用的LSF队列设置了。我们来看一个实际例子:

Begin Queue
QUEUE_NAME    = pdq                           # 队列名称为pdq
USERS         = pd_users                      # 仅限pd_users用户组使用
HOSTS         = pd_hosts                      # 队列使用pd_hosts主机组
PRIORITY      = 100                           # 队列优先级为100
FAIRSHARE     = USER_SHARES[[default,1]]      # 启用公平调度策略(Fairshare),各用户具有相同比重
RUNLIMIT      = 240:0                         # 作业最多运行时长10天
UJOB_LIMIT    = 64                            # 每用户最多使用64个job slots
DESCRIPTION   = For physical design jobs.     # 队列描述
End Queue

上面这个例子定义了一个用于接受IC设计流程中“物理设计”计算任务的队列,名为pdq,并限制了用户,以及每个用户在队列上运行的job数(最多64个slots),每个作业最多运行10天(240小时),并通过Fairshare调度策略保证资源公平使用。

这是LSF队列的基本参数,LSF还有很多队列参数用于更复杂的资源限制、作业控制和调度策略这些方面,实际上LSF 10.1在lsb.queues里可以设置的参数多达121个。在本文末尾,我们会附上队列参数列表和用途分类。

了解了LSF基本参数,我们接下来应该怎么划分队列呢?我们应该创建几个队列,分别用于什么目的呢?

这个并没有标准答案。这主要还是根据不同公司自身业务需要、团队情况、项目特点、资源情况来设计队列。

以芯片设计为例,我们可以根据团队来划分队列,例如分为前端FE、后端BE,再结合团队所在地点(假设有上海和北京两个设计团队),可以分为shfe(上海前端)、shbe(上海后端)、bjfe(北京前端)、bjbe(北京后端)这4个队列。也可以按照项目来设置队列,例如芯片1的项目设置一个队列,芯片2的项目设置一个队列。也可以按照使用的工具来设置队列,这些工具对计算资源有特殊需求,例如需要用到大内存。

可能会有人提出疑问,如果按照某种方式(例如按项目)划分了队列,如果再想按照EDA工具进一步划分(设置细粒度的资源需求和资源限制),是不是需要把队列再按工具进行拆分?这当然可以。LSF也提供了另外一种方式,即通过lsb.applications来实现这样的需求,以避免创建出太多的队列。后面我们会专门介绍LSF的application设置。

队列的创建和设置,除了要考虑业务、团队和项目特点,也要考虑资源利用率。既要限制用户和作业资源,也要共享资源。通过LSF的高级调度策略、队列优先级、主机(组)优先级等设置,充分利用计算资源,尽可能提升集群的作业吞吐量和整体内存及CPU利用率。

前面提到LSF 10.1的lsb.queues有多达121个参数可以设置,我们根据这些参数的用途进行了分类,参数详细使用方法可以参考如下链接:

IBM Documentation

LSF 10.1 lsb.queues参数列表

基本参数
  • QUEUE_NAME

  • DESCRIPTION

  • USERS

  • HOSTS

  • PRIORITY

资源限制参数
  • CORELIMIT

  • CPULIMIT

  • DATALIMIT

  • FILELIMIT

  • MEMLIMIT

  • PROCESSLIMIT

  • RUNLIMIT

  • STACKLIMIT

  • SWAPLIMIT

  • TASKLIMIT

  • THREADLIMIT

  • HJOB_LIMIT

  • PJOB_LIMIT

  • QJOB_LIMIT

  • UJOB_LIMIT

  • HOSTLIMIT_PER_JOB

  • RESRSV_LIMIT

  • ELIGIBLE_PEND_TIME_LIMIT

  • EXTENDABLE_RUNLIMIT

  • IMPT_JOBLIMIT

  • IMPT_TASKLIMIT

  • PEND_TIME_LIMIT

作业控制参数
  • JOB_CONTROLS

  • JOB_IDLE

  • JOB_OVERRUN

  • JOB_UNDERRUN

  • JOB_WARNING_ACTION

  • LOAD_INDEX

  • RUN_WINDOW

  • RESUME_COND

  • STOP_COND

  • TERMINATE_WHEN

作业类型或资源需求参数
  • CHKPNT

  • INTERACTIVE

  • EXCLUSIVE

  • MIG

  • RERUNNABLE

  • RES_REQ

作业运行参数
  • JOB_STARTER

  • PRE_EXEC

  • POST_EXEC

  • HOST_POST_EXEC

  • HOST_PRE_EXEC

调度策略参数
  • FAIRSHARE

  • PREEMPTION

  • RESOURCE_RESERVE

  • SLOT_RESERVE

  • BACKFILL

公平调度(Fairshare)策略参数
  • FAIRSHARE

  • CPU_TIME_FACTOR

  • RUN_JOB_FACTOR

  • RUN_TIME_FACTOR

  • COMMITTED_RUN_TIME_FACTOR

  • ENABLE_HIST_RUN_TIME

  • ENABLE_GPU_HIST_RUN_TIME

  • FAIRSHARE_ADJUSTMENT_FACTOR

  • GPU_RUN_TIME_FACTOR

  • HIST_HOURS

  • RUN_TIME_DECAY

  • DISPATCH_ORDER

  • FAIRSHARE_QUEUES

  • MAX_JOB_PREEMPT

  • MAX_SLOTS_IN_POOL

  • SLOT_POOL

  • SLOT_SHARE

  • USE_PRIORITY_IN_POOL

抢占调度(Preemption)策略参数
  • PREEMPTION

  • PRIORITY

  • MAX_JOB_PREEMPT

  • MAX_TOTAL_TIME_PREEMPT

  • NO_PREEMPT_INTERVAL

  • PREEMPT_DELAY

预留调度(Reservation)策略参数
  • RESOURCE_RESERVE

  • SLOT_RESERVE

回填调度(Backfill)策略参数
  • BACKFILL

  • INTERRUPTIBLE_BACKFILL

调度性能调优参数
  • JOB_ACCEPT_INTERVAL

  • NEW_JOB_SCHED_DELAY

  • RELAX_JOB_DISPATCH_ORDER

容器作业参数
  • CONTAINER

  • DOCKER_IMAGE_AFFINITY

  • EXEC_DRIVER

多集群参数
  • RCVJOBS_FROM

  • SNDJOBS_TO

  • FWD_JOB_FACTOR

  • FWD_USERS

  • IMPT_JOBBKLG

  • IMPT_JOBLIMIT

  • IMPT_TASKBKLG

  • IMPT_TASKLIMIT

  • MAX_PREEXEC_RETRY

  • MAX_RSCHED_TIME

  • MC_FORWARD_DELAY

  • REMOTE_MAX_PREEXEC_RETRY

Resource Connector参数
  • RC_ACCOUNT

  • RC_DEMAND_POLICY

  • RC_HOSTS

其它参数
  • ADMINISTRATORS

  • APS_PRIORITY

  • CHUNK_JOB_SIZE

  • CPU_FREQUENCY

  • CSM_REQ

  • DATA_TRANSFER

  • DEFAULT_EXTSCHED

  • DEFAULT_HOST_SPEC

  • DISPATCH_BY_QUEUE

  • DISPATCH_WINDOW

  • ESTIMATED_RUNTIME

  • GPU_REQ

  • IGNORE_DEADLINE

  • JOB_ACTION_WARNING_TIME

  • JOB_SIZE_LIST

  • LOCAL_MAX_PREEXEC_RETRY

  • LOCAL_MAX_PREEXEC_RETRY_ACTION

  • MANDATORY_EXTSCHED

  • MAX_JOB_REQUEUE

  • MAX_PROTOCOL_INSTANCES

  • NETWORK_REQ

  • NICE

  • PLAN

  • QUEUE_GROUP

  • REQUEUE_EXIT_VALUES

  • SLA_GUARANTEES_IGNORE

  • SUCCESS_EXIT_VALUES

  • USE_PAM_CREDS

欢迎关注下方微信公众号【HPC常青园】,共同交流HPC集群管理经验和最佳实践。如果您有关于HPC集群的具体需求,欢迎邮件沟通交流:hpc@ivyent.cn。

HPC常青园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivyent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值