LSF作业调度系统中的资源(三)

静态资源

静态资源是代表主机信息的内置资源,这些信息随时间不变,例如用户进程可用的最大RAM或机器中的处理器数量。大多数静态资源由LIM在启动时确定,或在LSF检测到硬件配置更改时确定。

静态资源可用于根据二进制架构、相对CPU速度和系统配置选择特定作业的适当主机。

在支持动态硬件重配置的UNIX主机上,资源ncpus、nprocs、ncores、nthreads、maxmem、maxswp和maxtmp不是静态的。

由LIM报告的静态资源:

索引度量单位确定方式
type主机类型字符串配置
model主机型号字符串配置
hname主机名称字符串配置
cpufCPU因子相对配置
server主机能否运行远程作业布尔值配置
rexpri执行优先级nice(2)参数配置
ncpus处理器数量处理器LIM
ndisks本地磁盘数量磁盘LIM
nprocs物理处理器数量处理器LIM
ncores每个物理处理器的核心数核心LIM
nthreads每个处理器核心的线程数线程LIM
maxmem最大RAMMBLIM
maxswp最大交换空间MBLIM
maxtmp/tmp中的最大空间MBLIM

主机类型(type)

主机类型是操作系统和CPU架构的组合。所有在同一计算机架构上运行相同操作系统的计算机都是同一类型。您可以在lsf.shared的HostType部分添加自定义主机类型。这个字母数字值最长可以是39个字符。

主机型号(model)

主机型号是主机类型和机器的CPU速度(CPU因子)的组合。所有具有相同相对类型和速度的主机都被分配相同的主机型号。您可以在lsf.shared的HostModel部分添加自定义主机型号。这个字母数字值最长可以是39个字符。

主机名称(hname)

主机名称指定主机用于识别自己的名称。

CPU因子(cpuf) CPU因子(通常简称为cpuf)代表主机CPU相对于集群中其他主机的速度。例如,如果一个处理器的速度是另一个的两倍,那么它的CPU因子应该是另一个的两倍。对于多处理器主机,CPU因子是单个处理器的速度;LSF自动调整主机CPU负载以考虑额外的处理器。CPU因子可以自动检测或由管理员定义。

服务器(server)

服务器静态资源是布尔值。它具有以下值:

  • 如果主机配置为运行来自其他主机的作业,则为1。
  • 如果主机是用于向其他主机提交作业的LSF客户端,则为0。

CPU数量(ncpus)

默认情况下,CPU数量代表机器拥有的核心数。由于大多数CPU由多个核心、线程和处理器组成,ncpus可以由集群管理员(全局或每主机)定义,以考虑以下之一:

  • 处理器
  • 处理器和核心
  • 处理器、核心和线程

全局上,这个定义由lsf.conf或ego.conf中的参数EGO_DEFINE_NCPUS控制。ncpus的默认行为是考虑核心数(EGO_DEFINE_NCPUS=cores)。

注意:

  • 在运行AIX的机器上,ncpus检测是不同的。在AIX下,检测到的物理处理器数量始终为1,而检测到的核心数量是所有物理处理器中的核心数量。线程检测与其他操作系统相同(每个核心的线程数)。

  • 当lsb.params中的PARALLEL_SCHED_BY_SLOT=Y时,资源需求字符串关键字ncpus指的是插槽数量而不是CPU数量,但是lshosts输出继续显示由lsf.conf中的EGO_DEFINE_NCPUS定义的ncpus。

磁盘数量(ndisks) 磁盘数量指定了机器拥有的本地磁盘数量,由LIM确定。

最大内存(maxmem) 最大内存是机器的总可用内存,以兆字节(MB)为单位。

最大交换空间(maxswp) 最大交换空间是机器拥有的总可用交换空间,以兆字节(MB)为单位。

最大临时空间(maxtmp) 最大临时空间是机器拥有的总临时空间,以兆字节(MB)为单位。



LIM如何检测核心、线程和处理器

传统上,ncpus(逻辑CPU数量)的值等于物理CPU的数量。然而,许多CPU包含多个核心和线程,因此传统的1:1映射不再有用。一个更有用的方法是将ncpus设置为以下之一:

  • 处理器的数量
  • 核心数 —— 每个处理器的核心数乘以处理器的数量(这是ncpus的默认设置)
  • 线程数 —— 每个核心的线程数乘以每个处理器的核心数再乘以处理器的数量

集群管理员使用lsf.conf或ego.conf中的EGO_DEFINE_NCPUS参数(而不是lsf.conf中的LSF_ENABLE_DUALCORE,或ego.conf中的EGO_ENABLE_DUALCORE)全局定义如何计算ncpus。

LIM检测并存储所有支持架构的处理器、核心和线程的数量。下图说明了守护进程、CPU和其它组件之间的信息流。

尽管ncpus的计算是全局应用的,但它可以在每个主机的基础上被覆盖。

为了正确检测处理器、核心和线程,LIM假设单台机器上的所有物理处理器都是同一类型。

在CPU架构和操作系统组合可能不支持准确检测处理器、核心、线程的情况下,LIM使用默认值:1个处理器、每个物理处理器1个核心、每个核心1个线程。如果LIM检测到它正在虚拟环境中运行(例如,VMware®),每个检测到的处理器同样被报告(作为一个单核心、单线程的物理处理器)。

LIM只检测操作系统识别的硬件。LIM的检测使用处理器或操作系统特定的技术(例如,Intel CPUID指令,或Solaris kstat()/core_id)。如果操作系统没有识别出CPU或核心(例如,如果一个较旧的操作系统没有识别出四核心处理器,而将其误检为双核心),那么LIM也不会识别它。

注意: RQL(资源和队列限制)标准化从不将线程考虑在内。考虑一个启用了超线程的Pentium处理器:线程不是完整的CPU,因此将它们视为CPU会人为降低系统负载。

在AIX上的ncpus检测 在运行AIX的机器上,ncpus的检测是不同的。在AIX下,检测到的物理处理器数量始终是1,而检测到的核心数量始终是所有物理处理器中的核心总数。线程的检测与其他操作系统相同(每个核心的线程数)。

定义 ncpus — 处理器、核心或线程

集群管理员必须定义如何计算 ncpus(逻辑CPU数量)。通常,可用作业槽位的数量等于 ncpus 的值;然而,在EGO资源组级别可以重新定义槽位。ncpus 的定义会在整个集群中全局应用。

操作步骤 打开 lsf.conf 或 ego.conf 文件。

UNIX 和 Linux 系统: LSF_CONFDIR/lsf.conf LSF_CONFDIR/ego/cluster_name/kernel/ego.conf

Windows 系统: LSF_CONFDIR\lsf.conf LSF_CONFDIR\ego\cluster_name\kernel\ego.conf

重要提示:只有当 LSF 集群中启用了 EGO 时,您才能在 ego.conf 中设置 EGO_DEFINE_NCPUS。如果未启用 EGO,则必须在 lsf.conf 中设置 EGO_DEFINE_NCPUS。

定义参数 EGO_DEFINE_NCPUS=[procs | cores | threads]。 将其设置为以下选项之一:

  • procs(ncpus=处理器数量)
  • cores(ncpus=处理器数量 * 核心数)
  • threads(ncpus=处理器数量 * 核心数 * 线程数)

默认情况下,ncpus 设置为 cores(核心数)。

注意:在不支持识别核心和线程的旧版 LIM 的集群中,将忽略 EGO_DEFINE_NCPUS。在只有管理主机 LIM 识别核心和线程的集群中,管理主机 LIM 会分配默认值(例如,在 LSF 6.2 中:1 个核心,1 个线程)。

保存并关闭 lsf.conf 或 ego.conf 文件。

结果 提示:作为最佳实践,应设置 EGO_DEFINE_NCPUS 而不是 EGO_ENABLE_DUALCORE。通过设置 EGO_DEFINE_NCPUS=cores,保留了 EGO_ENABLE_DUALCORE=y 的功能。

与 lsf.conf 中 LSF_LOCAL_RESOURCES 的交互 如果启用了 EGO,并且在 ego.conf 中设置了 EGO_LOCAL_RESOURCES,同时在 lsf.conf 中设置了 LSF_LOCAL_RESOURCES,则 EGO_LOCAL_RESOURCES 优先生效。

定义动态主机上 ncpus 的计算方法

集群中特定动态和静态主机上的 ncpus 全局定义可以被覆盖。

操作步骤 打开 lsf.conf 或 ego.conf 文件。

UNIX 和 Linux 系统:

LSF_CONFDIR/lsf.conf

LSF_CONFDIR/ego/cluster_name/kernel/ego.conf
Windows 系统:
LSF_CONFDIR\lsf.conf

LSF_CONFDIR\ego\cluster_name\kernel\ego.conf
重要提示: 只有当 LSF 集群中启用了 EGO 时,您才能在 ego.conf 中设置 EGO_LOCAL_RESOURCES。如果未启用 EGO,则必须在 lsf.conf 中设置 EGO_LOCAL_RESOURCES。

定义参数 EGO_LOCAL_RESOURCES="[resouece resource_name]"。 将 resource_name 设置为以下选项之一:

  • define_ncpus_procs
  • define_ncpus_cores
  • define_ncpus_threads

注意: 资源定义是互斥的。每个主机只能选择一个资源定义。

例如: Windows 系统:

EGO_LOCAL_RESOURCES="[type NTX86] [resource define_ncpus_procs]"
Linux 系统:
EGO_LOCAL_RESOURCES="[resource define_ncpus_cores]"
保存并关闭 ego.conf 文件。

定义静态主机上 ncpus 的计算方法

集群中特定动态和静态主机上的 ncpus 全局定义可以被覆盖。

操作步骤 打开 lsf.cluster.cluster_name 文件。

Linux 系统:

LSF_CONFDIR/lsf.cluster.cluster_name

Windows 系统:

LSF_CONFDIR\lsf.cluster.cluster_name

找到您想要定义 ncpus 计算的主机。在 RESOURCES 列中,添加以下任一定义:

  • define_ncpus_procs
  • define_ncpus_cores
  • define_ncpus_threads

注意:资源定义是互斥的,每个主机只能选择一个资源定义。

例如:

Begin Host
HOSTNAME  model    type        r1m  mem  swp  RESOURCES    #Keywords
#lemon    PC200    LINUX86     3.5  1    2   (linux)
#plum     !        NTX86       3.5  1    2   (nt)
Host_name !        NTX86        -   -    -   (define_ncpus_procs)
End     Host

保存并关闭 lsf.cluster.cluster_name 文件。

重启管理主机。

上海诺熵科技有限公司提供高性能计算/AI,大数据集群整体解决方案。

网址:www.neuentro.com

微信公众号:爱算数

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱算数

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

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

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

打赏作者

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

抵扣说明:

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

余额充值