Slurm 优先级站点因子插件 API

概述

本文档描述了 Slurm site_factor 插件及其定义的 API。 它旨在为希望编写自己 Slurm site_factor 插件的程序员提供资源。

Slurm site_factor 插件是实现本文所述 Slurm site_factor API 的 Slurm 插件。 它们旨在为站点提供一种构建自定义多因子优先级因子的方法,并且仅在 PriorityType=priority/multifactor 的情况下加载和运行。

这些插件旨在设置和更新与特定作业对应的 job_record_t 中的 site_factor 值。 请注意,site_factor 本身是一个 无符号整数,但使用 NICE_OFFSET 作为 偏移量以允许值为正或负。插件本身必须将 NICE_OFFSET 添加到存储到 site_factor 的值中以确保正常操作,否则 该值本身将极为负面,作业优先级可能会降到 1。(这是不对应于被保留作业的最低值。)

插件必须符合 Slurm 插件 API,并具有以下规范:

const char plugin_type[]="major/minor"
主要类型必须是 "site_factor",次要类型可以是特定插件的任何可识别缩写。

const char plugin_name[]
插件的某个描述性名称。 对于其格式没有要求。

const uint32_t plugin_version
如果指定,则标识用于构建此插件的 Slurm 版本,尝试从不同版本的 Slurm 加载插件将导致错误。 如果未指定,则插件可以被任何版本的 Slurm 命令和守护进程加载,但这可能会导致由于插件函数参数或插件使用的其他 Slurm 函数的变化而导致的难以诊断的故障。

API 函数

以下函数必须出现。未实现的函数必须是存根,否则插件将无法加载。

int init(void)

描述:
当插件加载时调用,在调用任何其他函数之前。将全局初始化放在这里。

返回:
SLURM_SUCCESS 表示成功,或
SLURM_ERROR 表示失败。

void fini(void)

描述:
当插件被移除时调用。在这里清理任何分配的存储。

返回: 无。

注意: 这些 init 和 fini 函数与 dlopen (3) 系统库中描述的函数不同。 C 运行时系统会占用这些符号进行其自身的初始化。 系统 _init() 在 Slurm init() 之前被调用,而 Slurm fini() 在系统的 _fini() 之前被调用。

void site_factor_p_reconfig(void)

描述: 刷新插件的 配置。每当 slurmctld 被重新配置时调用。

返回: void

void site_factor_p_set(job_record_t *job_ptr)

描述: 设置作业的 site_priority(如果需要)。

参数:
job_ptr(输入)指向作业记录的指针。

返回: void

void site_factor_p_update(void)

描述: 处理作业列表中所有 site_priority 值的周期性更新。每

返回: void

参数

这些参数可以在 slurm.conf 中用于配置插件以及收集有关正在运行的作业的信息的频率。

PrioritySiteFactorParameters
site_factor 插件的可选参数。任何值的解释由 site_factor 插件本身决定。
PrioritySiteFactorPlugin
指定应使用哪个插件。
PriorityCalcPeriod
调用 site_factor_p_update() 的间隔

最后修改于 2019 年 10 月 23 日