正确使用登录节点与计算节点¶
登录节点和计算节点承担的职责不同,正确区分两者的用途,是保障平台稳定运行和提升作业效率的基本要求。
登录节点主要用于轻量级交互操作,例如登录集群、编辑和检查作业脚本、浏览和整理文件、加载软件环境、提交作业,以及进行少量调试和测试。它的设计目标是为大量用户同时提供稳定的交互入口,而不是承载持续的高负载计算。
计算节点则用于实际执行计算任务,包括大规模并行程序、软件编译、数据预处理、模型训练、后处理分析,以及需要较多 CPU、内存或 GPU 资源的应用。凡是会长时间占用大量计算资源的程序,都应当在计算节点上运行。
如果用户在登录节点上直接运行高负载任务,往往会导致登录节点 CPU、内存或 I/O 资源被过度占用,进而影响其他用户登录、编辑文件、提交作业和日常交互操作。在负载较高时,还可能造成系统响应变慢、连接卡顿,甚至影响平台管理和运维任务的正常执行。
登录节点进程限制将进一步收紧
为保障登录节点的稳定性和公平使用,平台将进一步限制登录节点上的高负载进程。请特别注意以下规则:
- 禁止在登录节点运行 IDE 和其它可能产生异常负载的程序,例如 VS Code、Codex、Cursor 等。
- 运行时间超过 4 小时的进程会被系统自动杀死,正常的系统进程(如 SSH 连接相关进程)除外。
- 单个用户在登录节点上使用总计超过 64 线程的进程会被系统自动删除。
在登录节点使用 srun 运行高负载程序¶
如果您只是希望临时运行一个高负载程序,而不是正式提交批处理作业,推荐在登录节点通过 srun 申请计算资源,并在计算节点上执行程序。
以软件编译为例,假设您需要使用 8 个 CPU 核心进行并行编译,可以直接运行:
srun -c 8 make -j8
该命令会向调度系统申请 8 个 CPU 核心,并在分配到的计算资源上执行 make -j8。这种方式适用于编译软件、短时间测试程序、执行较重的预处理任务等场景,可以避免把编译负载直接压在登录节点上。
如果需要指定分区、时长或更多资源选项,可以进一步参考 srun 文档 和 srun --help。
命令行配置 SSH 直连计算节点¶
如果想要从 ssh 命令行直连到计算节点运行程序, 平台提供了一个脚本,用户可以从自己的电脑通过 SSH 先连接到登录节点,再由登录节点自动申请计算节点并转发连接。完成该配置后,本地客户端就可以直接连到分配得到的计算节点,从而避免将实际负载放在登录节点上。
例如,可以在本机(在 个人电脑 上,不是 在登录节点)的 ~/.ssh/config 中加入如下配置:
# 原始的 ssh 配置,用于连接到登录节点
Host ikkem-hpc
HostName 10.26.14.64
# 用户名,修改为你自己的用户名
User username
# 指定一个独立的 host 配置, 可以用应用或使用场景命名
# 同一个 Host 重复连接会连接到同一个计算节点,
# 如果想要连接到不同的计算节点,可以复制一份配置并修改 Host 名称和应用名称(my-app)
Host ikkem-my-app
# 用户名,修改为你自己的用户名
User username
# 借助登录节点提供的脚本,指定一个唯一标识 my-app 和申请的资源数
# 支持的命令行选项可参考 salloc --help
ProxyCommand ssh ikkem-hpc '/opt/scripts/auto-salloc.sh my-app -c 8 -p cpu'
# 以下两个选项用来避免 fingerprint 验证
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# 如果想给其它 app 运行在独立的计算节点,可以同样再写一个配置并指定不同应用名
Host ikkem-other-app
User username
ProxyCommand ssh ikkem-hpc '/opt/scripts/auto-salloc.sh other-app -c 8 -p cpu'
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
配置完成后,可以先运行下面的命令进行测试:
ssh ikkem-my-app
该命令会自动申请一个计算节点并连接到该节点。登录成功后,可以运行以下命令确认当前所在节点:
hostname
如果输出的是计算节点名称,而不是登录节点名称,就说明配置已经生效。
在 VS Code 中配置 SSH 连接计算节点¶
在登录节点运行 VS Code, Codex, Cursor 等 IDE 是产生异常负载的常见原因, 影响登录节点的稳定性和其他用户的使用体验。 你可以使用以下方法,在本地 VS Code 中配置 SSH 连接计算节点,避免把负载放在登录节点上。
安装SSH插件:Remote - SSH¶
点击左侧扩展图标 → 在搜索栏输入Remote - SSH → 点击 Install → 等待安装完成

配置 SSH 连接计算节点¶
点击 左侧 Remote Explorer → SSH → 选择本机的~/.ssh/config配置文件

新增以下配置并保存(与命令行登录方式配置一致):
# 原始的 ssh 配置,用于连接到登录节点
Host ikkem-hpc
HostName 10.26.14.64
# 用户名,修改为你自己的用户名
User username
# 指定一个独立的 host 配置, 可以用应用或使用场景命名
# 同一个 Host 重复连接会连接到同一个计算节点,
# 如果想要连接到不同的计算节点,可以复制一份配置并修改 Host 名称和应用名称(my-app)
Host ikkem-my-app
# 用户名,修改为你自己的用户名
User username
# 借助登录节点提供的脚本,指定一个唯一标识 my-app 和申请的资源数
# 支持的命令行选项可参考 salloc --help
ProxyCommand ssh ikkem-hpc '/opt/scripts/auto-salloc.sh my-app -c 8 -p cpu'
# 以下两个选项用来避免 fingerprint 验证
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# 如果想给其它 app 运行在独立的计算节点,可以同样再写一个配置并指定不同应用名
Host ikkem-other-app
User username
ProxyCommand ssh ikkem-hpc '/opt/scripts/auto-salloc.sh other-app -c 8 -p cpu'
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
点击连接ikkem-my-app → 选择 Linux 平台 → 等待分配节点并连接(首次约 30 秒到 1 分钟)

连接成功后,VSCode 底部状态栏显示: SSH: compute-vscode ← 已连接到计算节点
可以运行以下命令确认当前所在节点:
hostname
回收计算节点¶
你可以通过 squeue 命令查看当前正在使用的计算节点资源, 由 auto-salloc.sh 申请的计算节点会以 auto-salloc 开头命名, 例如 auto-salloc-my-app, 如果不再需要使用计算节点了, 可以通过 scancel 命令回收计算节点资源以避免浪费机时。
计算节点的网络访问说明¶
计算节点默认不能直接访问互联网。为解决这一问题,平台提供了 HTTP 代理:
http://mu013:8888
对于大多数支持 http_proxy 或 https_proxy 环境变量的程序,
可以手动 export 设置对应的环境变量,或者使用以下平台提供的脚本自动设置:
source /public/scripts/proxy.sh
该脚本会自动设置代理相关环境变量;如果某些程序不读取这些环境变量,则需要根据程序自身的配置方式手动指定代理。