你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
OpenPBS
可以通过修改群集定义的配置部分中的“run_list”,在 CycleCloud 群集上轻松启用 OpenPBS。 PBS Professional 群集的两个基本组件是“主”节点,它提供 PBS Professional 软件在其中运行的共享文件系统,以及作为装载共享文件系统并执行提交的作业的主机的“执行”节点。 例如,简单的群集模板代码片段可能如下所示:
[cluster my-pbspro]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[pbspro_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[pbspro_execute_role]
在 CycleCloud 中使用定义导入和启动群集将生成单个“主”节点。 可以通过命令将执行节点添加到群集 cyclecloud add_node
。 例如,若要添加 10 个执行节点,
cyclecloud add_node my-pbspro -t execute -c 10
基于 PBS 资源的自动缩放
Cyclecloud 维护两个资源来扩展动态预配功能。 这些资源是 nodearray 和 machinetype。
如果提交作业并指定 nodearray 资源 qsub -l nodearray=highmem -- /bin/hostname
,则 CycleCloud 会将节点添加到名为“highmem”的 nodearray。 如果没有此类节点数组,作业将保持空闲状态。
同样,如果指定了作业提交的计算机类型资源,例如 qsub -l machinetype:Standard_L32s_v2 my-job.sh
,CycleCloud 会在“execute” (默认) nodearray 中自动缩放“Standard_L32s_v2”。 如果该计算机类型在“execute”节点数组中不可用,则作业将保持空闲状态。
这些资源可以组合使用:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
仅当“Standard_HB60rs”计算机指定为“hpc”节点数组时,才会自动缩放。
添加分配给 nodearrays 的其他队列
在具有多个节点数组的群集上,通常创建单独的队列以自动将作业路由到适当的 VM 类型。 在此示例中,我们假定群集模板中定义了以下“gpu”nodearray:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
导入群集模板并启动群集后,可以在服务器节点上运行以下命令以创建“gpu”队列:
/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"
注意
上述队列定义会将队列中的所有 VM 打包成单个 VM 规模集以支持 MPI 作业。 若要为串行作业定义队列并允许多个 VM 规模集,请同时为这两者resources_default
设置default_chunk
ungrouped = true
。 如果希望计划程序将作业打包到 VM 上,而不是轮循机制分配作业,还可以设置 resources_default.place = pack
。 有关 PBS 作业打包的详细信息,请参阅 官方 PBS 专业 OSS 文档。
PBS 专业配置参考
以下是可以切换为自定义功能的 PBS Professional 特定配置选项:
PBS Pro 选项 | 说明 |
---|---|
pbspro.slots | 要向 PBS Pro 报告的给定节点的槽数。 槽数是节点可以执行的并发作业数,此值默认为给定计算机上的 CPU 数。 如果不基于 CPU 但基于内存、GPU 等运行作业,则可以重写此值。 |
pbspro.slot_type | 节点提供的“slot”类型的名称。 默认值为“execute”。 当作业使用硬资源 slot_type=<type> 标记时,该作业 将仅在 同一槽类型的计算机上运行。 这样,就可以为每个节点创建不同的软件和硬件配置,并确保始终按正确的节点类型计划适当的作业。 |
pbspro.version | 默认值:“18.1.3-0”。 这是要安装和运行的 PBS Professional 版本。 这是当前默认选项, 也是唯一 选项。 将来可能支持 PBS Professional 软件的其他版本。 |
使用 CycleCloud 连接 PBS
CycleCloud 通过名为 azpbs
的可安装代理管理 OpenPBS 群集。 此代理连接到 CycleCloud 以读取群集和 VM 配置,还与 OpenPBS 集成,以有效处理作业和主机信息。 文件中的所有azpbs
配置通常/opt/cycle/pbspro/autoscale.json
都autoscale.json
位于文件中。
"password": "260D39rWX13X",
"url": "https://cyclecloud1.contoso.com",
"username": "cyclecloud_api_user",
"logging": {
"config_file": "/opt/cycle/pbspro/logging.conf"
},
"cluster_name": "mechanical_grid",
重要文件
每次 azpbs
调用 PBS 配置时,代理都会分析 PBS 配置 - 作业、队列、资源。
该命令的 stderr 和 stdout 以及日志文件中提供了信息,这两种信息都位于可配置级别。 (具有参数的所有 PBS 管理命令 qcmd
也记录到文件中) 。
所有这些文件都可以在安装代理的 /opt/cycle/pbspro/ 目录中找到。
文件 | 位置 | 描述 |
---|---|---|
自动缩放配置 | autoscale.json | 自动缩放、资源映射、CycleCloud 访问信息的配置 |
自动缩放日志 | autoscale.log | 代理主线程日志记录,包括 CycleCloud 主机管理 |
需求日志 | demand.log | 资源匹配的详细日志 |
qcmd 跟踪日志 | qcmd.log | 记录代理 qcmd 调用 |
日志记录配置 | logging.conf | 日志记录掩码和文件位置的配置 |
定义 OpenPBS 资源
此项目允许通过 cyclecloud-pbspro (azpbs) 项目将 OpenPBS 资源与 Azure VM 资源关联。 此资源关系在 . 中 autoscale.json
定义。
使用我们随附的群集模板定义的默认资源为
{"default_resources": [
{
"select": {},
"name": "ncpus",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "group_id",
"value": "node.placement_group"
},
{
"select": {},
"name": "host",
"value": "node.hostname"
},
{
"select": {},
"name": "mem",
"value": "node.memory"
},
{
"select": {},
"name": "vm_size",
"value": "node.vm_size"
},
{
"select": {},
"name": "disk",
"value": "size::20g"
}]
}
命名 mem
的 OpenPBS 资源等同于名为 node.memory
节点属性,该属性是任何虚拟机的总内存。 此配置允许 azpbs
处理资源请求,例如 -l mem=4gb
,通过将作业资源要求的值与节点资源进行比较。
请注意,磁盘当前已硬编码为 size::20g
。
下面是处理 VM 大小特定磁盘大小的示例
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
自动缩放和缩放集
CycleCloud 在 OpenPBS 群集中以不同的方式处理跨作业和串行作业。
跨作业将降落在属于同一放置组的节点上。 放置组具有特定的平台含义 (SinglePlacementGroup=true) VirtualMachineScaleSet,CC 将为每个跨跨节点集托管命名放置组。 使用此放置组名称的 PBS 资源 group_id
。
队列 hpc
追加与使用本机队列默认值等效 -l place=scatter:group=group_id
的队列。
安装 CycleCloud OpenPBS 代理 azpbs
OpenPBS CycleCloud 群集将管理服务器节点上代理的安装和配置。 准备包括设置 PBS 资源、队列和挂钩。 还可以在 CycleCloud 外部完成脚本安装。
# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro
# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh
# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh
# Creates the azpbs autoscaler
./install.sh --venv /opt/cycle/pbspro/venv
# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
--username user \
--password password \
--url https://fqdn:port \
--cluster-name cluster_name
azpbs validate
CycleCloud 支持跨计划程序的标准自动停止属性集:
属性 | 描述 |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | 是否在此节点上启用自动停止? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | 节点在完成作业后,在缩减作业之前, (以秒为单位的时间量) 。 |
cyclecloud.cluster.autoscale.idle_time_before_jobs | 节点在缩减作业之前,) 节点处于空闲状态的时间 (以秒为单位。 |
注意
CycleCloud 不支持使用 Open PBS 的突发配置。
注意
尽管 Windows 是正式支持的开放 PBS 平台,但 CycleCloud 目前不支持在 Windows 上运行 Open PBS。