常见问题
网络
登录节点进行网络接入认证
在登录节点登录校园网账号
集群中的登录节点进行网络接入认证(即登入南京大学校园网认证p.nju.edu.cn)后才可访问互联网,认证后登录节点所有用户均可访问互联网(相当于整个登录节点共享),请注意网络与账号隐私安全!
命令行登录和登出p.nju.edu.cn的方法有:
curl -X POST https://p.nju.edu.cn/api/portal/v1/login -H "Content-type: application/json" -d '{"username":"<username>","password":"<password>"}'
curl -X POST https://p.nju.edu.cn/api/portal/v1/logout -H "Content-type: application/json" -d '{}'
curl -s "http://p2.nju.edu.cn/portal_io/login?username=<username>&password=<password>"
curl -s http://p2.nju.edu.cn/portal_io/logout
**【强烈推荐】**如果有一些软件源需求,如conda、pip等包管理,或者需要外部代码库、容器,您可以通过中心提供的下列服务直接在集群上使用,无需登录校园网认证:
计算节点访问网络
所有计算节点均不能自由无限制的访问外网(含校园网和互联网),如需访问可以单独申请开放。当前已经放开的网络访问
SSH/SFTP登录时报 no matching host key type found
SSH/SFTP登录时报错no matching host key type found. Their offer: ssh-rsa,ssh-dss,命令行添加选项-o HostKeyAlgorithms=+ssh-rsa或在~/.ssh/config中增加HostKeyAlgorithms +ssh-rsa
安装
pip安装包到自己的目录下
Python的大多数包不需要root权限也能安装,只需在pip install后加-t指定安装目录即可,如:
cd scikit-opt-master
pip install -t $HOME .
这样就装到自己的家目录下。在~/.bashrc里或者作业脚本中加上环境变量
export PYTHONPATH=$HOME:$PYTHONPATH
作业
作业运行时实际占用CPU核数过多
- 在作业中限定使用的CPU核数与申请核数相同,否则超过申请核数使用资源的作业会被杀掉。
特别是MATLAB/Python,很多Python包会自动多核并行计算,需要使用环境变量(如 OMP_NUM_THREADS、NUMEXPR_NUM_THREADS、OPENBLAS_NUM_THREADS、MKL_NUM_THREADS)等方式设定线程数,与进程数一起匹配申请的核数。
export OMP_NUM_THREADS=$LSB_DJOB_NUMPROC
export NUMEXPR_NUM_THREADS=$LSB_DJOB_NUMPROC
export OPENBLAS_NUM_THREADS=$LSB_DJOB_NUMPROC
export MKL_NUM_THREADS=$LSB_DJOB_NUMPROC
- 可以尝试在提交作业时添加如下参数,做CPU亲和绑定
#BSUB -R affinity[core:cpubind=core:membind=localprefer:distribute=pack]
- 如果实在不行可以
#BSUB -x独占节点运行作业
排队作业数上限
动态限制用户排队作业数不能超过MAX(1000,MIN((30000-总作业数)/10,(20000-总排队作业数)/6))
即用户排队作业数,不超过三万减去总作业数的十分之一,也不超过二万减去总排队作业数的六分之一,但保底一千个。
作业状态UNKWN
一般是两种情况之一,如果作业状态长时间处于UNKWN状态,一般来说就是计算节点坏了可以直接杀掉作业。
- 因为计算节点负载过高,未能及时获取作业状态导致状态未知,这种情况一般只需要等待即可,待负载下降获取状态后就正常了。
- 因为计算节点出现故障且长时间未恢复,调度系统无法获取作业状态,此时如果登录不到相应的计算节点,可以直接杀掉作业。
路径
$HOME相对路径
让/bbfs相应目录保持在$HOME下的相对路径,这样可以轻松应对未来路径的变更
[yaoge123@login1 ~]$ ln -s /bbfs$HOME cache
[yaoge123@login1 ~]$ ln -s /bbfs/scratch/$USER scratch
[yaoge123@login1 ~]$ ls -l|grep bbfs
lrwxrwxrwx 1 yaoge123 yaoge 26 Mar 16 11:45 cache -> /bbfs/fsb/home/yaoge/yaoge123
lrwxrwxrwx 1 yaoge123 yaoge 20 Mar 16 11:45 scratch -> /bbfs/scratch/yaoge123
连接
VSCode 远程连接集群
VSCode 的 Remote-SSH 插件是远程开发的利器,但由于集群启用了两步认证(2FA),且登录节点(entry)不支持隧道转发,因此无法直接通过常规方式连接。解决方案是:在计算节点上启动一个用户态 SSH 服务,绑定一个高位端口,然后使用公钥直连该端口。
下面以在计算节点 m002 上操作为例(假设你已通过 srun --pty bash 或 ssh m002 进入了计算节点)。
1、在计算节点上配置用户态 SSH 服务
-
创建服务目录并生成主机密钥
mkdir -p ~/.sshd ssh-keygen -t rsa -f ~/.sshd/ssh_host_rsa_key -N "" -
编写配置文件
~/.sshd/sshd_configvim ~/.sshd/sshd_config写入以下内容(端口可自定义,此处以
2222为例):Port 2222 ListenAddress 0.0.0.0 HostKey ~/.sshd/ssh_host_rsa_key PasswordAuthentication no ChallengeResponseAuthentication no UsePAM yes PrintMotd no Subsystem sftp internal-sftp -
配置公钥登录(本地公钥写入服务器)
- 在本地(你的电脑)获取公钥内容。Windows PowerShell 中执行:
若使用 ED25519 则替换为type $env:USERPROFILE\.ssh\id_rsa.pubid_ed25519.pub。 - 若本地无公钥则新建。Windows PowerShell 中执行:
若使用 ED25519 则在 Windows PowerShell 中执行:ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"
执行后会提示你保存文件的位置,直接按回车使用默认路径。接着提示设置密码短语(passphrase),按回车留空(不设密码)。然后就可以执行获取公钥内容的步骤。ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com" - 回到计算节点,将公钥写入
~/.ssh/authorized_keys:mkdir -p ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/authorized_keys # 粘贴公钥内容,保存退出 chmod 600 ~/.ssh/authorized_keys chmod 755 ~ # 修复主目录权限,避免认证失败
- 在本地(你的电脑)获取公钥内容。Windows PowerShell 中执行:
-
启动用户态 sshd(务必使用非 debug 模式)
/usr/sbin/sshd -f ~/.sshd/sshd_config验证监听端口是否成功:
ss -tlnp | grep 2222应看到类似
0.0.0.0:2222的输出。
2、本地连接测试
在本地终端中测试 SSH 连接(替换 IP 为计算节点的校园网 IP,可通过 hostname -I 查看):
ssh -p 2222 用户名@210.28.xxx.xxx
若测试成功,再测试 SFTP(VSCode 依赖):
sftp -P 2222 用户名@210.28.xxx.xxx
正常进入 sftp 交互界面即表示一切就绪。
3、配置 VSCode
-
编辑本地 SSH 配置文件(路径
~/.ssh/config),加入主机条目:Host cluster-dev HostName 210.28.xxx.xxx User 你的集群用户名 Port 2222 IdentityFile ~/.ssh/id_rsa # 或 id_ed25519,与本地公钥对应 -
在 VSCode 中连接
- 安装插件 Remote - SSH(如未安装)。
- 按下
F1或点击左下角齿轮图标,选择 Remote-SSH: Connect to Host...,然后输入cluster-dev。 - 首次连接时,VSCode 会自动在计算节点上安装
.vscode-server,稍等片刻即可。 - 连接成功后,打开远程文件夹(如你的作业目录),即可像本地一样编辑、调试和运行代码。
注意:若 VSCode 连接后打开文件夹时断开,通常是因为 sshd 以 debug 模式运行(
-d参数)导致的,请确保启动命令不包含-d。若出现该问题,先pkill -u $USER sshd结束所有用户态 sshd,再重新用正确命令启动。
4、进程管理(可选)
- 查看当前用户启动的 sshd:
ps -ef | grep sshd | grep $USER - 关闭所有用户态 sshd:
pkill -u $USER sshd
安全提醒:该直连方式仅在校园网或 VPN 环境下使用,切勿暴露至公网;建议关闭密码登录(仅保留公钥)以防范暴力破解。
5、备选方案:网页版 VSCode(code-server)
若 SSH 方案不稳定,也可在计算节点上部署 code-server,通过浏览器访问:
# 需先安装或使用模块
code-server --bind-addr 0.0.0.0:8080
然后在本地浏览器访问 http://210.28.xxx.xxx:8080 即可获得浏览器版 VSCode 界面(注意密码保护,建议设置 --auth password)。