news 2026/6/3 3:08:59

国家超算中心 srun CPU 提示错误 should be kept no more than DefMemPerCPU

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
国家超算中心 srun CPU 提示错误 should be kept no more than DefMemPerCPU

国家超算中心 srun CPU 提示错误 should be kept no more than DefMemPerCPU

srun -p kshctest -q htc --cpus-per-task=4 --mem=16G --pty /bin/bash
srun: error: Unable to allocate resources: Job submission failed because too much memory was requested relative to the number of CPUs requested. The requested memory:CPU should be kept no more than DefMemPerCPU
srun: ======= Tips: reduce job’s request memory (–mem or --memory-per-cpu) =======

这个错误是因为你请求的内存与 CPU 比例超过了该分区/QoS 的DefMemPerCPU限制

答案 salloc -p kshctest -q user_acz6ty4okx --cpus-per-task=4 --mem=16G 用户名替换下 user_acz6ty4okx 队列名 也替换下 kshctest

队列名 可以再这里看 https://www.scnet.cn/ui/console/index.html#/my-product/basic-resources/computing-cesource

查看命令 sacctmgr show assoc user=$USER format=cluster,partition,qos

Cluster Partition QOS 查看

问题分析

你的请求:

  • CPU: 4 核
  • 内存: 16G
  • 内存/CPU 比: 4G/核

kshctest分区或htcQoS 配置的DefMemPerCPU大概率低于 4G/核(常见值可能是 2G 或 3G)。

解决方案

方案 1:减少内存(推荐)

将内存降到符合比例限制,例如尝试8G(假设限制是 2G/核):

srun-pkshctest-qhtc --cpus-per-task=4--mem=8G--pty/bin/bash

如果不确定具体限制,可以逐步尝试--mem=4G--mem=8G--mem=12G

方案 2:增加 CPU 数量

保持 16G 内存,但增加 CPU 数量使比例合规:

srun-pkshctest-qhtc --cpus-per-task=8--mem=16G--pty/bin/bash

方案 3:使用--mem-per-cpu替代--mem

显式控制每核内存,更不容易触发此错误:

srun-pkshctest-qhtc --cpus-per-task=4--mem-per-cpu=2G--pty/bin/bash

方案 4:查看集群具体限制(确认 DefMemPerCPU)

你可以查看该分区的配置:

scontrol show partition kshctest

或查看 QoS 限制:

sacctmgr show qos htcformat=name,maxmempercpu

建议

如果你实际只需要 4 核但确实需要大内存,建议:

  1. 先尝试--mem=8G看是否能成功
  2. 如果不够,联系集群管理员确认DefMemPerCPU具体数值,或申请使用大内存分区/队列

srun -p kshctest -q htc --cpus-per-task=4 --mem=8G --pty /bin/bash srun: error: Unable to allocate resources: Invalid qos specification

这个错误说明htc这个 QoS 在kshctest分区上不存在,或者你没有权限使用它

解决方案

方案 1:去掉 QoS 参数直接提交(最可能解决)

srun-pkshctest --cpus-per-task=4--mem=8G--pty/bin/bash

方案 2:查看你有哪些 QoS 可用

sacctmgr show assocuser=$USERformat=cluster,partition,qos

或查看所有可用 QoS:

sacctmgr show qosformat=name

方案 3:查看 kshctest 分区支持的 QoS

scontrol show partition kshctest|grep-iqos

方案 4:查看该分区默认/允许的 QoS

scontrol show partition kshctest

关注QoSAllowQos字段。

常见情况

  • 如果kshctest默认分区,可能不需要指定-q
  • 某些分区只允许特定的 QoS(如normaldebugbatch等),htc可能不在这个列表里

sacctmgr show assoc user=$USER format=cluster,partition,qos

sacctmgr show assoc user=$USER format=cluster,partition,qos
Cluster Partition QOS


QoS全称是Quality of Service,在 Slurm 集群调度系统中翻译为服务质量服务质量等级

简单理解

QoS 是集群管理员给用户分配的一套资源使用规则套餐,规定了你能用什么、用多少、怎么用。

类比

就像手机套餐:

  • 你的 QoS 是user_acz6ty4okx→ 相当于你的专属套餐
  • 别人的 QoS 可能是htcdebuggpu等 → 别人的不同套餐

每个套餐(QoS)包含不同的资源限额和优先级规则

  • 最多能申请多少 CPU/内存/GPU
  • 最长能运行多久
  • 能提交多少个作业
  • 作业排队优先级高低
  • 能访问哪些分区

在 Slurm 中的作用

参数含义
-q/--qos指定使用哪个 QoS 套餐
sacctmgr show assoc user=$USER查看你有哪些可用套餐

为什么之前报错?

你之前用了-q htc,但你的账号只关联了user_acz6ty4okx这个 QoS,所以系统说“Invalid qos specification”(无效的 QoS 规格)—— 就像你拿着别人的套餐卡去消费,系统不认。

总结

QoS = 你的资源使用权限套餐。提交作业时必须用你自己账号关联的那个 QoS,否则会被拒绝。
cancon user
_acz6ty4okx

你的可用 QoS 是user_acz6ty4okx,不是htc。同时你的关联集群是cancon

正确的提交方式

基础命令(使用正确 QoS)

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=8G--pty/bin/bash

如果集群需要显式指定

srun-Mcancon-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=8G--pty/bin/bash

srun--cluster=cancon-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=8G--pty/bin/bash

关于内存问题

你之前遇到的内存/CPU 比例超限问题可能仍然存在。如果上面的命令报同样的DefMemPerCPU错误,继续降低内存:

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=4G--pty/bin/bash

或增加 CPU:

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=8--mem=16G--pty/bin/bash

快速验证

先试试最简单的:

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=4G--pty/bin/bash

srun -p kshctest -q user_acz6ty4okx --cpus-per-task=4 --mem=8G --pty /bin/bash

srun: job 114729946 queued and waiting for resources
srun: job 114729946 has been allocated resources
srun: ROUTE: split_hostlist: hl=a13r3n02 tree_width 0
如果成功,再根据需要逐步增加内存。

现象说明

ROUTE: split_hostlist: hl=a13r3n02 tree_width 0
资源已经分配成功(allocate resources),卡在slurm跨节点pty通道建连:调度拿到a13r3n02节点资源,但登录机 ↔ 计算节点slurmd端口不通/拓扑路由异常,终端shell起不来,死等链路。

方案1:改用salloc分步交互(绕开srun跨节点pty网络阻塞,曙光最稳用法)

# 1.先预占资源,留在login节点salloc-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=16G# 输出会显示分配节点如 a13r3n02,直接ssh进节点ssha13r3n02

进去就是原生交互式bash,无slurm路由转发,彻底避开ROUTE阻塞。
用完exit两次依次退出节点、释放资源。

内存规则:单CPU固定4G,4核=16G、8核=32G、32核=128G,不再超限报错。

方案2:srun加参数绕过拓扑路由,强制单机直连

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=16G --disable-topo--pty/bin/bash

--disable-topo关闭slurm tree拓扑路由计算,不再打印ROUTE日志、不走交换机分层调度。

方案3:临时最小资源测试(1核4G)

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=1--mem=4G --disable-topo--pty/bin/bash

补充原因

曙光智算kshctest开启topology/tree树形网络调度,srun–pty需要双向6817/6818端口互通;部分机房安全策略拦截跨节点slurm通信端口,就卡在split_hostlist路由解析。优先用salloc+ssh是该集群标准交互手段

需要我直接给拉满32C/128G的salloc命令吗?

–pty 这个参数一定要的吗

一句话结论

想要交互式敲bash,–pty必须加;只跑单次命令不用加

1、加 --pty(你现在需求:交互式进节点shell)

srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=16G--pty/bin/bash
  • 作用:分配伪终端,把当前登录终端的输入/输出直通计算节点bash,能持续敲ls/cd/python,就是你要的交互式环境。
  • 不加pty直接写/bin/bash:资源分到后bash瞬间退出,作业直接结束,秒掉线。

2、不加 --pty(只执行一条指令,跑完立刻释放资源)

# 只在节点跑一次hostname,输出后任务结束srun-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=16Ghostname# 只跑一次python脚本,跑完退出srun... python test.py

无交互式终端,命令执行完作业直接销毁,没法持续操作节点

3、规避你之前ROUTE卡死方案(不用srun --pty,首选salloc)

# 1.预占资源(留在login,不会卡死路由)salloc-pkshctest-quser_acz6ty4okx --cpus-per-task=4--mem=16G# 输出节点名 a13r3n02,手动ssh进去原生交互ssha13r3n02

这套完全避开srun的pty路由转发问题,曙光集群最优交互方式。

内存固定规则再记:4核=16G、8核=32G、32核=128G(单核4G上限)

^C
[acz6ty4okx@a13r3n02 home]$ # 1.预占资源(留在login,不会卡死路由)
[acz6ty4okx@a13r3n02 home]$ salloc -p kshctest -q user_acz6ty4okx --cpus-per-task=4 --mem=16G
salloc: error: Job submit/allocate failed: Job submission failed because too much memory was requested relative to the number of CPUs requested. The requested memory:CPU should be kept no more than DefMemPerCPU
salloc: ======= Tips: reduce job’s request memory (–mem or --memory-per-cpu) =======
[acz6ty4okx@a13r3n02 home]$ # 输出节点名 a13r3n02,手动ssh进去原生交互
[acz6ty4okx@a13r3n02 home]$ ssh a13r3n02
Warning: Permanently added ‘a13r3n02,10.1.13.43’ (ECDSA) to the list of known hosts.
[acz6ty4okx@a13r3n02 ~]$ cd /public/
[acz6ty4okx@a13r3n02 public]$ cd /home
[acz6ty4okx@a13r3n02 home]$ ls
install.sh lizhen mount.sh sy umount.sh uninstall.sh

退出

1.预占资源(留在login,不会卡死路由)

salloc -p kshctest -q user_acz6ty4okx --cpus-per-task=4 --mem=16G

输出节点名 a13r3n02,手动ssh进去原生交互

ssh a13r3n02

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 3:06:26

AI工具API限额黑箱破解(附Python动态配额监控脚本+实时告警模板)

更多请点击: https://kaifayun.com 第一章:AI工具API调用限制的本质与行业现状 AI工具API调用限制并非单纯的技术瓶颈,而是服务提供商在资源成本、模型推理负载、商业策略与合规风控之间动态权衡的结果。高频请求会显著拉升GPU算力消耗与内存…

作者头像 李华
网站建设 2026/6/3 3:06:26

韩国英拓克直流调速器ID271/035

韩国英拓克(Intron)直流调速器型号 ID271/035 是一款广泛应用于工业自动化领域的直流电机调速设备。以下是其关键特性和技术参数:核心参数额定电压:适配直流电机电压范围 $220V \pm 10%$额定电流:$35A$(型号…

作者头像 李华
网站建设 2026/6/3 3:04:39

CSIYOLO框架:基于深度学习的智能散射感知技术

1. CSIYOLO框架:基于深度学习的智能散射感知技术解析在6G通信和自动驾驶等前沿领域,集成感知与通信(ISAC)技术正成为关键使能者。作为ISAC的核心组件,散射感知技术能够通过通信信号实现对环境中散射体的精确定位&#…

作者头像 李华
网站建设 2026/6/3 3:04:39

OpenClaw本地AI建站教程:零基础30分钟搭建企业静态网站

一、前置准备:部署OpenClaw,开启AI建站功能OpenClaw是一款本地离线AI工具,支持一键部署、解压即用,全程无需编写代码,适配普通用户快速建站需求。详细部署操作步骤如下:1. 下载适配Windows系统的OpenClaw官…

作者头像 李华