strigger
部分:Slurm 命令 (1)更新:Slurm 命令
索引
名称
strigger - 用于设置、获取或清除 Slurm 触发器信息。概要
strigger --set [选项...]strigger --get [选项...]
strigger --clear [选项...]
描述
strigger 用于设置、获取或清除 Slurm 触发器信息。 触发器包括事件,例如节点故障、作业达到时间限制或作业终止。 这些事件可以导致执行任意脚本等操作。 典型用途包括通知系统管理员节点故障以及在作业接近时间限制时优雅地终止作业。 主机列表表达式用于 nodelist 或作业 ID 作为程序的参数传递。触发事件不会立即处理,但会定期检查触发事件(目前每 15 秒一次)。 在该时间间隔内发生的任何触发事件将与在时间间隔结束时设置的触发程序进行比较。 在该时间间隔内发生的任何事件将执行一次触发程序。 这些事件的记录(例如,在前 15 秒内 DOWN 的节点)将被清除。 触发程序必须在下一个时间间隔结束之前设置新的触发器,以确保不会错过任何触发事件,或者触发器必须使用参数“--flags=PERM”创建。 如果需要,可以为同一事件设置多个触发程序。
注意:此命令只能在用户 SlurmUser 运行时设置触发器,除非 SlurmUser 被配置为用户 root。 这是为了让 slurmctld 守护进程设置执行程序的适当用户和组 ID。 还要注意,触发程序在 slurmctld 守护进程使用的同一节点上执行,而不是某个分配的计算节点。 要检查 SlurmUser 的值,请运行以下命令:
-
scontrol show config | grep SlurmUser
参数
- -C, --backup_slurmctld_assumed_control
- 当备份 slurmctld 假定控制时触发事件。
-
- -B, --backup_slurmctld_failure
- 当备份 slurmctld 失败时触发事件。
-
- -c, --backup_slurmctld_resumed_operation
- 当备份 slurmctld 在故障后恢复操作时触发事件。
-
- --burst_buffer
- 当发生突发缓冲区错误时触发事件。
-
- --clear
- 清除或删除先前定义的事件触发器。 必须指定 --id、--jobid 或 --user 选项以识别要清除的触发器。 只有用户 root 或触发器的创建者可以删除触发器。
-
- -M, --clusters=<字符串>
- 要发出命令的集群。 请注意,slurmdbd 必须处于运行状态,以使此选项正常工作,除非在配置了 FederationParameters=fed_display 的联合环境中运行。
-
- -d, --down
- 如果指定的节点进入 DOWN 状态,则触发事件。
-
- -D, --drained
- 如果指定的节点进入 DRAINED 状态,则触发事件。
-
- --draining
- 如果指定的节点进入 DRAINING 状态,则触发事件,在它被 DRAINED 之前。
-
- -F, --fail
- 如果指定的节点进入 FAILING 状态,则触发事件。
-
- -f, --fini
- 当指定的作业完成执行时触发事件。
-
- --flags=<标志>
- 将标志与预留关联。多个标志应以逗号分隔。 有效标志包括:
-
- --get
- 显示已注册的事件触发器。 选项可用于过滤目的。
-
- -i, --id=<id>
- 触发器 ID 号。
-
- -I, --idle
- 如果指定的节点在 IDLE 状态下保持至少指定的时间段,则触发事件。 这对于休眠保持空闲的节点非常有用,从而减少功耗。
-
- -j, --jobid=<id>
- 感兴趣的作业 ID。 注意:--jobid 选项不能与 --node 选项一起使用。当 --jobid 选项与 --up 或 --down 选项一起使用时,所有分配给该作业的节点将被视为触发事件的节点。
-
- -n, --node[=主机]
- 感兴趣的主机名称。 默认情况下,所有与作业相关的节点(如果指定了 --jobid)或系统上的所有节点都被视为事件触发器。 注意:--node 选项不能与 --jobid 选项一起使用。当 --jobid 选项与 --up、--down 或 --drained 选项一起使用时,所有分配给该作业的节点将被视为触发事件的节点。由于此选项的参数是可选的,因此为了正确解析,单字母选项必须紧跟其值,而不应在它们之间包含空格。例如“ -ntux ”而不是“ -n tux ”。
-
- -N, --noheader
- 在显示触发器列表时不打印标题。
-
- -o, --offset=<秒>
- 指定的操作应在该时间间隔后发生。 如果操作应在事件之前发生,请指定负值。 如果未指定 --offset 选项,则默认值为零。 该时间的分辨率约为 20 秒,因此要在作业达到时间限制之前不少于五分钟执行脚本,请指定 --offset=320(5 分钟加 20 秒)。
-
- -h, --primary_database_failure
- 当主数据库失败时触发事件。此事件在会计插件尝试打开与 mysql 的连接并失败时触发,并且 slurmctld 需要数据库进行某些操作。
-
- -H, --primary_database_resumed_operation
- 当主数据库在故障后恢复操作时触发事件。 当会计插件与 mysql 的连接恢复时发生。
-
- -g, --primary_slurmdbd_failure
- 当主 slurmdbd 失败时触发事件。该触发器由 slurmctld 在尝试连接到 slurmdbd 但在套接字上未收到响应时启动。
-
- -G, --primary_slurmdbd_resumed_operation
- 当主 slurmdbd 在故障后恢复操作时触发事件。 当从 slurmctld 到 slurmdbd 的连接打开并收到响应时触发此事件。它也可能在不同的情况下发生,例如每 15 秒定期检查连接状态、保存状态、代理队列填充等。
-
- -e, --primary_slurmctld_acct_buffer_full
- 当主 slurmctld 会计缓冲区满时触发事件。
-
- -a, --primary_slurmctld_failure
- 当主 slurmctld 失败时触发事件。
-
- -b, --primary_slurmctld_resumed_control
- 当主 slurmctld 恢复控制时触发事件。
-
- -A, --primary_slurmctld_resumed_operation
- 当主 slurmctld 在故障后恢复操作时触发事件。
-
- -p, --program=<路径>
- 当事件发生时执行指定完全限定路径的程序。 如果需要,可以引用路径并包含额外的程序参数。 该程序将以设置触发器的用户身份执行。 如果程序在 5 分钟内未终止,将与任何生成的进程一起被杀死。
-
- -Q, --quiet
- 不报告非致命错误。 这对于清除可能已经被清除的触发器非常有用。
-
- -r, --reconfig
- 当系统配置更改时触发事件。 当 slurmctld 守护进程读取其配置文件或节点状态更改时触发此事件。
-
- -R, --resume
- 如果指定的节点被设置为 RESUME 状态,则触发事件。
-
- --set
- 根据提供的选项注册事件触发器。 注意:事件仅触发一次。必须为同一类型的未来事件设置新的事件触发器。 触发器只能在用户 SlurmUser 运行时设置,除非 SlurmUser 被配置为用户 root。
-
- -t, --time
- 当指定作业的时间限制到达时触发事件。 这必须与 --jobid 选项一起使用。
-
- -u, --up
- 如果指定的节点从 DOWN 状态恢复服务,则触发事件。
-
- --user=<用户名或 ID>
- 清除或获取由指定用户创建的触发器。 例如,用户 root 为用户 adam 创建的作业触发器可以使用选项 --user=root 清除。 可以指定用户名或用户 ID。
-
- -v, --verbose
- 打印详细的事件日志。这包括数据结构的时间戳、记录计数等。
-
- -V , --version
- 打印版本信息并退出。
-
输出字段描述
- TRIG_ID
- 触发器 ID 号。
-
- RES_TYPE
- 资源类型:作业 或 节点
-
- RES_ID
- 资源 ID:作业 ID 或主机名或“*”表示任何主机
-
- TYPE
- 触发器类型:时间 或 fini(仅适用于作业),down 或 up(适用于作业或节点),或drained、idle 或 reconfig(仅适用于节点)
-
- OFFSET
- 时间偏移(以秒为单位)。负数表示操作应在事件之前发生(如果可能)。
-
- USER
- 请求操作的用户名称
-
- PROGRAM
- 事件发生时要执行的程序的路径名
-
性能
执行 strigger 会向 slurmctld 发送远程过程调用。如果来自 strigger 或其他向 slurmctld 守护进程发送远程过程调用的 Slurm 客户端命令的调用过多,可能会导致 slurmctld 守护进程的性能下降,可能导致服务拒绝。
请勿在 shell 脚本或其他程序的循环中运行 strigger 或其他向 slurmctld 发送远程过程调用的 Slurm 客户端命令。确保程序将对 strigger 的调用限制在收集信息所需的最小范围内。
环境变量
某些 strigger 选项可以通过环境变量设置。这些环境变量及其对应的选项如下所示。 (注意:命令行选项将始终覆盖这些设置。)
- SLURM_CONF
- Slurm 配置文件的位置。
-
- SLURM_DEBUG_FLAGS
- 指定 strigger 使用的调试标志。有关完整的标志列表,请参见 slurm.conf(5) 手册页。环境变量优先于 slurm.conf 中的设置。
-
示例
- 每当主 slurmctld 失败时执行程序 "/usr/sbin/primary_slurmctld_failure"。
-
$ cat /usr/sbin/primary_slurmctld_failure #!/bin/bash # 提交下一个主 slurmctld 失败事件的触发器 strigger --set --primary_slurmctld_failure \ --program=/usr/sbin/primary_slurmctld_failure # 使用电子邮件通知管理员故障 /bin/mail slurm_admin@site.com -s 主_SLURMCTLD_FAILURE $ strigger --set --primary_slurmctld_failure \ --program=/usr/sbin/primary_slurmctld_failure
- 每当集群中的任何节点出现故障时执行程序 "/usr/sbin/slurm_admin_notify"。主题行将包含进入故障状态的节点名称(由 Slurm 作为参数传递给脚本)。
-
$ cat /usr/sbin/slurm_admin_notify #!/bin/bash # 提交下一个事件的触发器 strigger --set --node --down \ --program=/usr/sbin/slurm_admin_notify # 通过电子邮件通知管理员 /bin/mail slurm_admin@site.com -s 节点故障:$* $ strigger --set --node --down \ --program=/usr/sbin/slurm_admin_notify
- 每当集群中的任何节点在空闲状态下保持至少 600 秒时执行程序 "/usr/sbin/slurm_suspend_node"。
-
$ strigger --set --node --idle --offset=600 \ --program=/usr/sbin/slurm_suspend_node
- 当作业 1234 距离达到时间限制还有 10 分钟时执行程序 "/home/joe/clean_up"。
-
$ strigger --set --jobid=1234 --time --offset=-600 \ --program=/home/joe/clean_up
- 当分配给作业 1234 的任何节点进入 DOWN 状态时执行程序 "/home/joe/node_died"。
-
$ strigger --set --jobid=1234 --down \ --program=/home/joe/node_died
- 显示与作业 1235 相关的所有触发器。
-
$ strigger --get --jobid=1235 TRIG_ID RES_TYPE RES_ID TYPE OFFSET USER PROGRAM 123 job 1235 time -600 joe /home/bob/clean_up 125 job 1235 down 0 joe /home/bob/node_died
- 删除事件触发器 125。
-
$ strigger --clear --id=125
- 在作业 1237 完成时执行 /home/joe/job_fini。
-
$ strigger --set --jobid=1237 --fini --program=/home/joe/job_fini
版权
版权所有 (C) 2007 加州大学理事会。 在劳伦斯利弗莫尔国家实验室制作(参见免责声明)。版权所有 (C) 2008-2010 劳伦斯利弗莫尔国家安全。
版权所有 (C) 2010-2022 SchedMD LLC。
此文件是 Slurm 的一部分,Slurm 是一个资源管理程序。 有关详细信息,请参见 <https://slurm.schedmd.com/>。
Slurm 是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的第 2 版,或(根据您的选择)任何更高版本。
Slurm 的分发是希望它会有用,但不提供任何担保;甚至没有对适销性或特定用途适用性的默示担保。有关详细信息,请参阅 GNU 通用公共许可证。
另请参阅
scontrol(1), sinfo(1), squeue(1)
索引
此文档由 man2html 使用手册页创建。
时间:2025年7月2日 13:21:56 GMT