当前位置: 首页 > news >正文

做调度作业提交过程简单介绍一下

✅作业提交与执行流程

前文提到在 Linux 的 HPC 或超算环境中,可以只在共享存储上安装一次应用程序,然后所有计算节点通过挂载共享目录来访问和执行这些程序,那么作业提交及执行过程是怎么样的流程呢?

结构说明:

  • 第一行是用户提交作业的入口;
  • 第二行是调度系统客户端,用户通过它与调度系统交互;
  • 第三行是调度系统管理端,负责调度和资源分配;
  • 第四行是两个计算节点,由调度系统分配作业;
  • 最后一行是共享存储系统,位于计算节点之间,统一提供程序和存储结果。

流程图的前两个,提交作业的机器和调度系统客户端的机器可以是同一台,也可以是不同的机器。

  • 如果是同一台机器:最简单,用户直接在这台机器上运行 sbatch 等命令;
  • 如果是不同的机器:提交作业的机器必须能通过某种方式调用调度系统客户端(比如通过 SSH、API、远程命令等);

如果是两台机器,且提交作业的机器是 Windows 系统:

  • 不能直接运行 Slurm 客户端命令,因为 Slurm 客户端工具(如 sbatchsqueue)是为 Linux/Unix 系统设计的;

  • 解决方案包括:

    方案 A:通过 SSH 登录到 Linux 客户端机器

    方案 B:通过 Web 界面(如 Slurm-web)或 REST API 提交

    • Windows 用户使用 SSH 工具(如 PuTTY、MobaXterm、WSL)登录到一台安装了 Slurm 客户端的 Linux 机器;
    • 在那台 Linux 机器上运行 sbatch 提交作业;
    • Windows 用户通过浏览器访问 Slurm-web;
    • Slurm-web 后端部署在 Linux 上,负责调用 Slurm 客户端或 REST API;
    • 用户无需直接接触 Linux 命令行;

Slurm-web登录页面如下所示:

提交方式提交端系统要求是否需要 Slurm 客户端说明
本地命令行提交Linux✅ 是用户直接运行 sbatch
远程 SSH 提交任意(含 Windows)✅ 是登录到 Linux 客户端机器
Web 页面提交(如 Slurm-web)任意(含 Windows)❌ 否(用户端)
✅ 是(服务端)
服务端调用 Slurm 客户端或 API
REST API 提交任意❌ 否直接通过 HTTP 请求与调度系统交互

✅ Slurm Web 界面(如 slurm-web)的作业提交机制

1. Slurm-web 是一个 Web 服务端程序

它通常部署在一台服务器上,提供一个 Web 页面供用户提交作业、查看队列、监控状态等。

2. 它如何提交作业?
  • 方式一:调用 Slurm 命令行客户端(如 sbatchsqueue

    • Slurm-web 的后端服务通常会在服务器上执行这些命令行工具。
    • 本质上,它是通过系统调用或 Python 的 subprocess 模块等方式,间接使用 Slurm 的客户端工具。
    • 所以,这种方式 依赖于调度系统客户端的存在

这种方式的前提是:

  • Slurm 客户端工具必须已经安装在运行 Slurm-web 的服务器上;
  • 该服务器必须有权限访问调度系统管理端(比如通过网络或本地 socket);
  • 用户身份可能通过 Web 登录系统映射到实际提交作业的 Linux 用户,或者使用统一的身份认证机制。
  • 方式二:调用 Slurm 的 API(如 Slurm REST API)

    • Slurm 提供了 REST API(如 Slurmrestd),允许通过 HTTP 请求提交作业、查询状态等。
    • 如果 Slurm-web 使用的是 REST API,那么它可以不依赖本地命令行客户端,而是通过网络直接与调度系统管理端通信。
    • 在这种情况下,REST API 本身就相当于一个“客户端接口”,只是以 HTTP 的形式存在。
提交方式是否依赖调度系统客户端说明
调用 sbatch 等命令✅ 是需要本地安装 Slurm 客户端工具
调用 Slurm REST API❌ 否(但需要 API 服务)通过 HTTP 与 Slurm 管理端通信

http://www.dtcms.com/a/326835.html

相关文章:

  • 第二十九天(文件io)
  • Android视频编辑方案测评:轻量化剪辑工具的性能表现
  • 基于51单片机红外遥控定时开关智能家电插座设计
  • golang 基础案例_02
  • 算法知识笔记
  • 学习日志31 python
  • 【C++】STL——priority_queue的使用与底层模拟实现
  • 查看 php 可用版本
  • Nestjs框架: RBAC基于角色的权限控制模型初探
  • STM32TIM定时器
  • 请求报文和响应报文(详细讲解)
  • Wed前端第二次作业
  • C语言增删查改实战:高效管理顺序表
  • docker安装searxng
  • monorepo架构设计方案
  • CICD部署流程详解文档笔记
  • 在 Ubuntu 中docker容器化操作来使用新建的 glibc-2.32
  • [激光原理与应用-244]:设计 - 光学 - CLBO晶体使用一段时间后,输出功率就会下降,原因有哪些?
  • OpenBMC中的snk-psu-manager:架构、原理与应用深度解析
  • 高防IP能为网站防御哪些网络攻击?
  • 从零开始学JAVAWeb-5
  • 腾讯云Edgeone限时免费
  • for循环详解与实战技巧
  • Edit Distance
  • 传统制造业减人不减效:一线用工优化的3个投入方向,用对工具比盲目裁员更关键
  • 对抗样本攻击检测与防御
  • 车载软件架构 --- 车辆量产后怎么刷写Flash Bootloader
  • BLE ADV
  • special topic 9 (2) and 1011(1)division one
  • 深入解析Windows系统下UDP绑定失败的原理与系统级解决方案