管理具有亲缘关系资源需求的作业

您可以使用 -l -aff 选项 bjobsbhistbacct来查看为具有 CPU 和内存亲缘关系资源需求的作业和任务分配的资源。 使用 bhosts -aff 来查看为亲缘关系作业分配的主机资源。

查看亲缘关系作业的作业资源 (-aff)

-aff 选项显示有关作业中每个任务的 CPU 和内存亲缘关系资源需求的作业信息。 一种表头AFFINITY显示作业中每个任务的详细内存和 CPU 绑定信息,每个分配的处理器单元对应一行。

仅与 bjobsbhistbacct-l 选项配合使用。

使用 bjobs -l -aff 显示作业任务的 CPU 和内存亲和性资源需求信息。 带有标题的表AFFINITY显示包含每个任务的详细亲缘关系信息,每个分配的处理器单元对应一行。 CPU 绑定和内存绑定信息显示在屏幕中的单独列中。

例如,以下作业启动具有以下亲缘关系资源需求的 6 任务:
bsub -n 6 -R"span[hosts=1] rusage[mem=100]affinity[core(1,same=socket,exclusive=(socket,injob))
:cpubind=socket:membind=localonly:distribute=pack]" myjob
Job <6> is submitted to default queue <normal>.
bjobs -l -aff 61

Job <61>, User <user1>, Project <default>, Status <RUN>, Queue <normal>, Comman
                     d <myjob1>
Thu Feb 14 14:13:46: Submitted from host <hostA>, CWD <$HOME>, 6 Processors R
                     equested, Requested Resources <span[hosts=1] rusage[mem=10
                     0]affinity[core(1,same=socket,exclusive=(socket,injob)):cp
                     ubind=socket:membind=localonly:distribute=pack]>;
Thu Feb 14 14:15:07: Started on 6 Hosts/Processors <hostA> <hostA> <hostA
                     > <hostA> <hostA> <hostA>, Execution Home </home/user1
                     >, Execution CWD </home/user1>;

 SCHEDULING PARAMETERS:
           r15s   r1m  r15m   ut      pg    io   ls    it    tmp    swp    mem
 loadSched   -     -     -     -       -     -    -     -     -      -      -
 loadStop    -     -     -     -       -     -    -     -     -      -      -

 RESOURCE REQUIREMENT DETAILS:
 Combined: select[type == local] order[r15s:pg] rusage[mem=100.00] span[hosts=1
                     ] affinity[core(1,same=socket,exclusive=(socket,injob))*1:
                     cpubind=socket:membind=localonly:distribute=pack]
 Effective: select[type == local] order[r15s:pg] rusage[mem=100.00] span[hosts=
                     1] affinity[core(1,same=socket,exclusive=(socket,injob))*1
                     :cpubind=socket:membind=localonly:distribute=pack]

 AFFINITY:
                     CPU BINDING                          MEMORY BINDING
                     ------------------------             --------------------
 HOST                TYPE   LEVEL  EXCL   IDS             POL   NUMA SIZE
 hostA               core   socket socket /0/0/0          local 0    16.7MB
 hostA               core   socket socket /0/1/0          local 0    16.7MB
 hostA               core   socket socket /0/2/0          local 0    16.7MB
 hostA               core   socket socket /0/3/0          local 0    16.7MB
 hostA               core   socket socket /0/4/0          local 0    16.7MB
 hostA               core   socket socket /0/5/0          local 0    16.7MB
 ...

使用 bhist -l -aff 显示有关作业任务 CPU 和内存亲和性资源需求的历史作业信息。

如果作业处于暂挂状态,那么将显示所请求的亲缘关系资源。 对于正在运行的作业,还会显示 LSF 做出的有效且组合的亲缘关系资源分配决策,以及一个标题为AFFINITY显示每个任务的详细内存和 CPU 绑定信息,每个已分配处理器单元对应一行。 对于已完成的作业 (EXIT 或 DONE 状态) ,将显示作业的亲缘关系需求以及有效和组合的亲缘关系资源需求详细信息。

下面的示例显示了工作 61 的 bhist 输出。

bhist -l -aff 61

Job <61>, User <user1>, Project <default>, Command <myjob>
Thu Feb 14 14:13:46: Submitted from host <hostA>, to Queue <normal>, CWD <$HO
                     ME>, 6 Processors Requested, Requested Resources <span[hos
                     ts=1] rusage[mem=100]affinity[core(1,same=socket,exclusive
                     =(socket,injob)):cpubind=socket:membind=localonly:distribu
                     te=pack]>;
Thu Feb 14 14:15:07: Dispatched to 6 Hosts/Processors <hostA> <hostA> <hostA>
                     <hostA> <hostA> <hostA>, Effective RES_REQ <sel
                     ect[type == local] order[r15s:pg] rusage[mem=100.00] span[
                     hosts=1] affinity[core(1,same=socket,exclusive=(socket,inj
                     ob))*1:cpubind=socket:membind=localonly:distribute=pack] >
                     ;

AFFINITY:
                    CPU BINDING                          MEMORY BINDING
                    ------------------------             --------------------
HOST                TYPE   LEVEL  EXCL   IDS             POL   NUMA SIZE
hostA               core   socket socket /0/0/0          local 0    16.7MB
hostA               core   socket socket /0/1/0          local 0    16.7MB
hostA               core   socket socket /0/2/0          local 0    16.7MB
hostA               core   socket socket /0/3/0          local 0    16.7MB
hostA               core   socket socket /0/4/0          local 0    16.7MB
hostA               core   socket socket /0/5/0          local 0    16.7MB

Thu Feb 14 14:15:07: Starting (Pid 3630709);
Thu Feb 14 14:15:07: Running with execution home </home/jsmith>, Execution CWD
                     </home/jsmith>, Execution Pid <3630709>;
Thu Feb 14 14:16:47: Done successfully. The CPU time used is 0.0 seconds;
Thu Feb 14 14:16:47: Post job process done successfully;

MEMORY USAGE:
MAX MEM: 2 Mbytes;  AVG MEM: 2 Mbytes

Summary of time in seconds spent in various states by  Thu Feb 14 14:16:47
  PEND     PSUSP    RUN      USUSP    SSUSP    UNKWN    TOTAL
  81       0        100      0        0        0        181

使用bacct-l-aff显示有关作业任务 CPU 和内存亲和资源分配的会计作业信息。 带有标题的表AFFINITY显示包含每个任务的详细亲缘关系信息,每个分配的处理器单元对应一行。 CPU 绑定和内存绑定信息显示在屏幕中的单独列中。 下面的示例显示了工作 61 的 bhist 输出。

bacct -l -aff 61

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

Job <61>, User <user1>, Project <default>, Status <DONE>, Queue <normal>, Comma
                     nd <myjob>
Thu Feb 14 14:13:46: Submitted from host <hostA>, CWD <$HOME>;
Thu Feb 14 14:15:07: Dispatched to 6 Hosts/Processors <hostA> <hostA> <hostA>
                     <hostA> <hostA> <hostA>, Effective RES_REQ <sel
                     ect[type == local] order[r15s:pg] rusage[mem=100.00] span[
                     hosts=1] affinity[core(1,same=socket,exclusive=(socket,inj
                     ob))*1:cpubind=socket:membind=localonly:distribute=pack] >
                     ;
Thu Feb 14 14:16:47: Completed <done>.

AFFINITY:
                    CPU BINDING                          MEMORY BINDING
                    ------------------------             --------------------
HOST                TYPE   LEVEL  EXCL   IDS             POL   NUMA SIZE
hostA               core   socket socket /0/0/0          local 0    16.7MB
hostA               core   socket socket /0/1/0          local 0    16.7MB
hostA               core   socket socket /0/2/0          local 0    16.7MB
hostA               core   socket socket /0/3/0          local 0    16.7MB
hostA               core   socket socket /0/4/0          local 0    16.7MB
hostA               core   socket socket /0/5/0          local 0    16.7MB

Accounting information about this job:
     CPU_T     WAIT     TURNAROUND   STATUS     HOG_FACTOR    MEM    SWAP
      0.01       81            181     done         0.0001     2M    137M
------------------------------------------------------------------------------

SUMMARY:      ( time unit: second )
 Total number of done jobs:       1      Total number of exited jobs:     0
 Total CPU time consumed:       0.0      Average CPU time consumed:     0.0
 Maximum CPU time of a job:     0.0      Minimum CPU time of a job:     0.0
 Total wait time in queues:    81.0
 Average wait time in queue:   81.0
 Maximum wait time in queue:   81.0      Minimum wait time in queue:   81.0
 Average turnaround time:       181 (seconds/job)
 Maximum turnaround time:       181      Minimum turnaround time:       181
 Average hog factor of a job:  0.00 ( cpu time / turnaround time )
 Maximum hog factor of a job:  0.00      Minimum hog factor of a job:  0.00

查看亲缘关系作业的主机资源 (-aff)

使用 bhosts -affbhosts -l -aff 显示用于 CPU 和内存亲和调度的主机拓扑信息。

将显示以下字段:
主机 [内存] host_name

主机上的可用内存。 如果无法确定内存可用性,请使用短划线 (-) 为主机显示。 如果使用 -aff 选项指定了 -l 选项,那么不会显示主机名。

对于不支持亲缘关系调度的主机,短划线 (-) 为主机内存显示,并且不显示主机拓扑。

NUMA [numa_node: recested_mem / max_mem]

请求的可用 NUMA 节点内存。 对于 NUMA 节点,请求的内存可能大于显示的最大可用内存。

将针对每个 NUMA 节点显示套接字,核心和线程标识。

套接字 是具有直接管道到内存的核心的集合。 每个套接字都包含 1 个或更多个核心。 这并不一定是指物理套接字,而是指机器的内存架构。

核心 是能够执行计算的单个实体。 在启用了超线程功能的主机上,一个内核可包含一个或多个线程。

例如:
bhosts -l -aff hostA
HOST  hostA
STATUS           CPUF  JL/U    MAX  NJOBS    RUN  SSUSP  USUSP    RSV DISPATCH_WINDOW
ok              60.00     -      8      0      0      0      0      0      -

 CURRENT LOAD USED FOR SCHEDULING:
                r15s   r1m  r15m    ut    pg    io   ls    it   tmp   swp   mem  slots
 Total           0.0   0.0   0.0   30%   0.0   193   25     0 8605M  5.8G 13.2G      8
 Reserved        0.0   0.0   0.0    0%   0.0     0    0     0    0M    0M    0M      -


 LOAD THRESHOLD USED FOR SCHEDULING:
           r15s   r1m  r15m   ut      pg    io   ls    it    tmp    swp    mem
 loadSched   -     -     -     -       -     -    -     -     -      -      -
 loadStop    -     -     -     -       -     -    -     -     -      -      -


 CONFIGURED AFFINITY CPU LIST: all

 AFFINITY: Enabled
 Host[15.7G]
     NUMA[0: 0M / 15.7G]
         Socket0
             core0(0)
         Socket1
             core0(1)
         Socket2
             core0(2)
         Socket3
             core0(3)
         Socket4
             core0(4)
         Socket5
             core0(5)
         Socket6
             core0(6)
         Socket7
             core0(7)
LSF 检测到拓扑结构中缺少元素时,它会尝试将缺少的层次添加到拓扑结构中,从而纠正问题。 例如,套接字和核心在hostB以下:
...
Host[1.4G] hostB
    NUMA[0: 1.4G / 1.4G] (*0 *1)
...

将运行请求 2 个核心, 2 个套接字或 2 个 CPU 的作业。 从同一 NUMA 节点请求 2 个核心也将运行。 但是,请求来自同一套接字的 2 核心的作业将保持暂挂状态。

使用 lshosts -T 来显示每个主机的主机拓扑信息。

显示每个主机或集群的主机拓扑信息:

将显示以下字段:

主机 [内存] host_name

主机上的最大可用内存,后跟主机名。 如果无法确定内存可用性,请使用短划线 (-) 为主机显示。

对于不支持亲缘关系调度的主机,短划线 (-) 为主机内存显示,并且不显示主机拓扑。

NUMA [numa_node: max_mem]

最大 NUMA 节点内存。 对于 NUMA 节点,请求的内存可能大于显示的最大可用内存。

如果不存在 NUMA 节点,那么不会显示输出中的 NUMA 层。 仍显示其他相关项,如主机,套接字,核心和线程。

如果主机不可用,那么仅显示主机名。 短划线 (-) 显示在通常显示可用主机内存的位置。

套接字 是具有直接管道到内存的核心的集合。 每个套接字都包含 1 个或更多个核心。 这并不一定是指物理套接字,而是指机器的内存架构。

核心 是能够执行计算的单个实体。 在启用了超线程功能的主机上,一个内核可包含一个或多个线程。

lshosts -Tbhosts -aff 输出不同:
  • 对于每个 NUMA 节点,不会显示套接字和核心标识。
  • 未显示 NUMA 节点的请求内存
  • lshosts -T 显示主机上所有已启用的 CPU ,而不仅仅是 lsb.hosts 中的 CPU 列表中定义的 CPU

节点包含套接字,套接字包含核心,如果核心支持多线程,那么核心可以包含线程。

在以下示例中,将显示完整拓扑 (NUMA ,套接字和核心) 信息hostA. 主机hostBhostC不是 NUMA 主机或它们不可用:
lshosts -T
Host[15.7G] hostA
    NUMA[0: 15.7G]
        Socket
            core(0)
        Socket
            core(1)
        Socket
            core(2)
        Socket
            core(3)
        Socket
            core(4)
        Socket
            core(5)
        Socket
            core(6)
        Socket
            core(7)

Host[-] hostB

Host[-] hostC
当 LSF 无法检测处理器单元拓扑时, lshosts -T 会显示最接近级别的处理器单元。 例如:
lshosts -T
     Host[1009M] hostA 
            Socket (0 1)

开启hostA有两个处理器单元: 0 和 1。 LSF 无法检测内核信息,因此处理器单元被连接到插座层。

对于客户端主机和混合群集或多群集环境中运行版本早于 LSF 的主机,不会显示硬件拓扑信息。 10.1.0.