查询slurm集群各个节点的运行情况

引言

slurm系统是一个集群,它原生的使用方式可以参考之前写的《slurm初识》和《slurm快速入门》。有时候我们想知道我们能申请哪些节点,以及各个节点的使用情况。

原生的指令大概有这两个,一个是使用squeue的方式列举出当前的工作列表。
在这里插入图片描述

而另一个则是sinfo。这两个命令给出的内容十分有限。

PARTITION        AVAIL  TIMELIMIT  NODES  STATE NODELIST
debug               up    1:00:00      1  maint ceres19-compute-26
debug               up    1:00:00      1    mix ceres14-compute-4
debug               up    1:00:00      1   idle ceres19-compute-25
brief-low           up    2:00:00      2  maint ceres19-compute-[26,40]
brief-low           up    2:00:00      1  down* ceres19-compute-37
brief-low           up    2:00:00     59    mix ceres18-compute-[0-17,19-27],ceres19-compute-[0-5,7-9,12,21-24,35-36,38-39,41-42,44-45,47,55-63]
brief-low           up    2:00:00      4  alloc ceres18-compute-18,ceres19-compute-[6,28,43]
brief-low           up    2:00:00     26   idle ceres19-compute-[10-11,13-20,25,27,29-34,46,48-54]
mem768-low          up    2:00:00      3   idle ceres18-mem768-0,ceres19-mem768-[0-1]
mem-low             up    2:00:00      3    mix ceres18-mem-[0-1],ceres19-mem-1

即使借鉴一些参数让给出的参数多一些,也最多能像教程里给出的那样。

sinfo -o "%20P %5D %14F %10m %11l %N"
PARTITION            NODES NODES(A/I/O/T) MEMORY     TIMELIMIT   NODELIST
debug                3     0/3/0/3        126000+    1:00:00     ceres14-compute-4,ceres19-compute-[25-26]
brief-low            92    33/58/1/92     381000     2:00:00     ceres18-compute-[0-27],ceres19-compute-[0-63]
priority-gpu         1     1/0/0/1        379000     14-00:00:00 ceres18-gpu-0
short*               100   51/48/1/100    126000+    2-00:00:00  ceres14-compute-[1-24,26-29,32-39,44-56,58-67],ceres18-compute-[24-27],ceres19-compute-[27-63]
medium               67    49/17/1/67     126000+    7-00:00:00  ceres14-compute-[26-29,32-39,44-56,58-67],ceres18-compute-[25-27],ceres19-compute-[35-63]
long                 34    31/3/0/34      126000+    21-00:00:00 ceres14-compute-[44-56,58-67],ceres18-compute-[26-27],ceres19-compute-[55-63]
mem                  8     3/4/1/8        1530000+   7-00:00:00  ceres14-mem-[0-3],ceres18-mem-2,ceres19-mem-[2-4]
mem768               1     0/1/0/1        763000     7-00:00:00  ceres18-mem768-1
huge                 1     1/0/0/1        4:16:1   3095104    14990      1-00:00:00  fat,AVX,AVX2,AVX novahuge001

如果我们想要下面这样清楚的显示整个集群的使用情况,该怎么操作呢?
在这里插入图片描述
这样申请资源就可以使用以下命令即可:

srun --job-name=test --gres=gpu:1 -w <HOSTNAME> -p <Partition> -c 32 --pty bash

构建执行脚本

上面那么清楚的展示是怎么创造出来的呢?那显然单纯的使用slurm命令是无法满足的,这需要bash编程技术了,整个sh文件如下:

#!/bin/bash

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

# 打印标题行
printf "${GREEN}%-15s %-12s %-11s %-15s %-8s %-12s %-12s %-15s %-s${NC}\n" "Hostname" "Partition" "Node/State" "Num_CPU" "CPUload" "Memsize(MB)" "Freemem(MB)" "GRES/Node" "Joblist"

# 获取节点信息
nodes=$(sinfo -o "%N %P %T %C %O %m %e %G" -h)

# 循环每个节点
echo "$nodes" | while read node; do
  # 分割节点信息
  hostname=$(echo $node | awk '{print $1}')
  partition=$(echo $node | awk '{print $2}')
  state=$(echo $node | awk '{print $3}')
  num_cpu=$(echo $node | awk '{print $4}')
  cpuload=$(echo $node | awk '{print $5}')
  memsize=$(echo $node | awk '{print $6}')
  freemem=$(echo $node | awk '{print $7}')
  gres=$(echo $node | awk '{print $8}')

  # 获取与当前节点关联的作业列表
  joblist=$(squeue -h -o "%i %u %b" -w $hostname | awk -v ORS=' ' '{print $1, $2, $3}')

  # 根据状态设置颜色
  if [[ $state == "idle" ]]; then
    state_color=$GREEN
  else
    state_color=$RED
  fi

  # 输出整理好的信息
  printf "%-15s %-12s ${state_color}%-11s${NC} %-15s %-8s %-12s %-12s %-15s %-s\n" $hostname $partition $state $num_cpu $cpuload $memsize $freemem $gres "$joblist"
done

看起来很复杂对吗?但是有了GPT以后,这个难度大大降低了,你只需要知道自己想要什么样子的,对他进行一个详细的描述,GPT就可以为你生成了。但是正如我之前所说,GPT只能做你知道的事情,做不到你不知道的事情。它只能像一个增益器,而不是你的替代品,因此自己的知识储备才是真本事。

如果需要每个用户能用

需要把show_clauster.sh这个文件放入/etc/profile.d文件夹下,并且使用命令chmod 777 show_clauster.sh让其变为每个人都可以调用。

这样,按道理而言,每次用户使用ssh登录的时候就会有提示了。如果没有的话,可以使用source /ect/profile的命令将其调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/294180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows通过注册表修改socket缓冲区大小的方法

在 Windows 通过修改注册表来更改 UDP 缓冲区的大小&#xff0c;按照以下步骤进行操作&#xff1a; 打开注册表编辑器&#xff1a;按下 Win R 键&#xff0c;然后输入 "regedit" 并点击 "确定"。 导航到以下路径&#xff1a;HKEY_LOCAL_MACHINE\System\C…

每日汇评:今天市场重点都转移到美国非农就业数据

周四美元走势摇摆不定&#xff1b; 到目前为止&#xff0c;欧元兑美元仍受到1.0900区域的支撑&#xff1b; 市场的下一个风险事件是美国就业数据的发布&#xff1b; 欧元兑美元在周四成功恢复了上涨动力&#xff0c;并短暂重返1.0970区间&#xff0c;在连续四个交易日的空头主导…

微服务应用可观测性解决方案介绍

目录 一、可观测性出现背景 二、什么是可观测性&#xff08;Observability&#xff09; 2.1 可观测性的不同解析 2.1.1 百度维基解析 2.1.2 IBM解析 2.1.3 CNCF&#xff08;云原生计算机基金会&#xff09;组织解析 2.1.4 我的个人理解 2.2 可观测性和监控的区别与联系 …

C++完成使用map Update数据 非二进制

1、在LXMysql.h和LXMysql.cpp分别定义和编写关于pin语句的代码 //获取更新数据的sql语句 where语句中用户要包含where 更新std::string GetUpdatesql(XDATA kv, std::string table, std::string where); std::string LXMysql::GetUpdatesql(XDATA kv, std::string table, std…

OpenHarmony内存泄漏指南 - 解决问题(综合)

本系列文章旨在提供定位与解决OpenHarmony应用与子系统内存泄露的常见手段与思路&#xff0c;将会分成几个部分来讲解。首先我们需要掌握发现内存泄漏问题的工具与方法&#xff0c;以及判断是否可能存在泄漏。接着需要掌握定位泄漏问题的工具&#xff0c;以及抓取trace、分析tr…

我们正迎来计算基因的巨大变革,即将到来的不仅是量子技术——

计算机是围绕逻辑构建的&#xff1a;利用电路执行数学运算。逻辑是围绕诸如加法器——这种将两个数字相加的基本电路&#xff0c;而构建的。 今天的微处理器和计算机历史初期的所有微处理器都是如此。这可以追溯到算盘&#xff0c;在某些基本层面上&#xff0c;这和你闪亮的游戏…

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt)

前端根据URL地址实现下载&#xff08;txt&#xff0c;图片&#xff0c;word&#xff0c;xlsx&#xff0c;ppt&#xff09; 一、对于txt,图片类的二、对于word&#xff0c;xlsx&#xff0c;ppt类的1.a标签可以实现下载2. window.open&#xff08;&#xff09; 一、对于txt,图片类…

软件推荐:MobaXterm

介绍 MobaXterm 是远程计算的终极工具箱&#xff0c;它提供了几乎所有重要的远程网络工具&#xff0c;SSH、RDP、FTP、VNC&#xff0c;只要你能想到的&#xff0c;都可以在MobaXterm中找到。除了海量协议外&#xff0c;MobaXterm 还支持安装额外的插件来扩展其功能。 软件官网…

技术查漏补缺(1)Logback

一、下定义&#xff1a;Logback是一个开源的日志组件 二、Logback的maven <!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><v…

MySQL-数据库概述

数据库相关概念&#xff1a; 数据库(DateBase)简称DB,就是一个存储数据的仓库&#xff0c;数据有组织的进行存储。 数据库分为关系型数据库简称RDBMS和非关系型数据库 关系型数据库简称RDBMS:建立在关系模型的基础上&#xff0c;由多张相互连接的二维表组成的数据库.简单来说…

D6208双向直流马达驱动芯片 用于IPC产品,可兼容BA6208,噪声低 ,工作电源电压范围宽。

D6208 是一块单片双向马达驱动电路&#xff0c;它使用TTL电平的逻辑信号就能控制卡式录音机和其它电子设备中的双向马达。该电路由一个逻辑部分和一个功率输出部分组成。逻辑部分控制马达正、反转向及制动&#xff0c;功率输出部分根据逻辑控制能提供100mA&#xff08;典型值&a…

处理数组,将一维转二维

实现金刚区可滑动效果 由于后端返回的数据是 不符合项目需求&#xff0c;所以需要将它转为为二位数组 // 转为二维数组convertOneDimArray() {let arr [integral, kefu-ermai, coupon, gift, scan, pause-circle, wifi, email, integral,kefu-ermai, coupon, gift, scan, pau…

前端知识体系思维导图

绝大部分分类方法、专业术语&#xff0c;出自专业书籍&#xff0c;如《JavaScript 高级程序设计&#xff08;第 4 版&#xff09;》、《JavaScript 权威指南&#xff08;第 7 版&#xff09;》《CSS 权威指南&#xff08;第四版&#xff09;》、《HTML5 权威指南》、《计算机网…

Postman的七种断言方法+超时设置!

超时的设置 Settings->General->Request Timeout in ms(0 for infinity)&#xff1a;设置请求超时的时间,默认为0 1.postman断言介绍 postman在发送请求后&#xff0c;需要对返回的结果做判断&#xff0c;验证是否符合预期&#xff0c;如状态码、响应头、响应正文等信息…

关于一名资深Java程序员在移动端的进阶之路

今天呢&#xff0c;就借此机会&#xff0c;跟大家聊一聊我的个人职业经历吧&#xff01; 那年刚毕业 刚毕业时候&#xff0c;入职的第一家公司&#xff0c;进去后&#xff0c;说实话&#xff0c;没有太大成长吧&#xff01;基本就是让我做一些可有可无的边缘性的工作&#xff…

提升办公效率:掌握批量文件重命名的技巧

在日常生活和工作中&#xff0c;经常要处理大量的文件&#xff0c;如文档、图片、音频等。在这些情况下&#xff0c;会遇到要批量重命名文件的情况。如果一个一个地重命名&#xff0c;不仅耗时&#xff0c;而且效率低下。今天来讲解一些技巧通过批量重命名文件&#xff0c;从而…

【Python学习】Python学习1

目录 【Python学习】Python学习1 1.前言2.Python安装3.PyCharm安装4.PyCharm插件推荐5.参考 文章所属专区 Python学习 1.前言 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python 由 Guido van Rossum 于 1989 年底发明&#xff0c;第一个公开发行版发…

go install后仍无法使用全局命令

如下图使用go install命令后人无法使用全局命令 发生这种情况是由于安装Go SDK时&#xff0c;不是一键安装&#xff0c;而是使用者自己区官网下载SDK后配置的环境变量。 使用iso或者应用商城下载就不会出现这种问题。 出现上述的问题是检查GOPATH的环境便利是否配置成功&…

【亲测有效】Win11 卸载MySQL5.7以及安装MySQL8.0.35

目录 一、卸载原来本地的mysql5.7 1.mysql服务部分 1.1停止mysql服务 1.2删除mysql服务 2.卸载 MySQL程序 3.残余文件的清理 3.1删除mysql安装的目录 3.2删除mysql数据存放的目录 3.3删除mysql自定义目录 4.清理注册表 5.删除环境变量配置 二、安装mysql8.0.35 1.…

算法31:针对算法30货币问题进行拓展 + 时间复杂度 + 空间复杂度优化--------从左往右尝试模型

在算法30中&#xff0c;我们说过从左往右尝试模型&#xff0c;口诀就是针对固定集合&#xff0c;值不同&#xff0c;就是讨论要和不要的累加和。 那么对于非固定集合&#xff0c;我们应该怎么做呢&#xff1f; 针对非固定集合&#xff0c;面值固定&#xff0c;张数无限。口诀…