Skip to main content

常见问题

网络

登录节点进行网络接入认证

在登录节点登录校园网账号

集群中的登录节点进行网络接入认证(即登入南京大学校园网认证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

**【强烈推荐】**如果有一些软件源需求,如condapip等包管理,或者需要外部代码库、容器,您可以通过中心提供的下列服务直接在集群上使用,无需登录校园网认证:

  • mirror.nju.edu.cncondapip等大量常用软件源或代码仓库镜像
  • 代码托管:可手动镜像各大在线git仓库作为中转
  • 私服仓库:各软件源、容器缓存

计算节点访问网络

所有计算节点均不能自由无限制的访问外网(含校园网和互联网),如需访问可以单独申请开放。当前已经放开的网络访问

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核数过多

  1. 在作业中限定使用的CPU核数与申请核数相同,否则超过申请核数使用资源的作业会被杀掉。

特别是MATLAB/Python,很多Python包会自动多核并行计算,需要使用环境变量(如 OMP_NUM_THREADSNUMEXPR_NUM_THREADSOPENBLAS_NUM_THREADSMKL_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
  1. 可以尝试在提交作业时添加如下参数,做CPU亲和绑定
#BSUB -R affinity[core:cpubind=core:membind=localprefer:distribute=pack]
  1. 如果实在不行可以 #BSUB -x 独占节点运行作业

排队作业数上限

动态限制用户排队作业数不能超过MAX(1000,MIN((30000-总作业数)/10,(20000-总排队作业数)/6))

即用户排队作业数,不超过三万减去总作业数的十分之一,也不超过二万减去总排队作业数的六分之一,但保底一千个。

作业状态UNKWN

一般是两种情况之一,如果作业状态长时间处于UNKWN状态,一般来说就是计算节点坏了可以直接杀掉作业。

  1. 因为计算节点负载过高,未能及时获取作业状态导致状态未知,这种情况一般只需要等待即可,待负载下降获取状态后就正常了。
  2. 因为计算节点出现故障且长时间未恢复,调度系统无法获取作业状态,此时如果登录不到相应的计算节点,可以直接杀掉作业。

路径

$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 bashssh m002 进入了计算节点)。

1、在计算节点上配置用户态 SSH 服务

  1. 创建服务目录并生成主机密钥

    mkdir -p ~/.sshd
    ssh-keygen -t rsa -f ~/.sshd/ssh_host_rsa_key -N ""
    
  2. 编写配置文件 ~/.sshd/sshd_config

    vim ~/.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
    
  3. 配置公钥登录(本地公钥写入服务器)

    • 本地在本地(你的电脑)获取公钥内容。Windows PowerShell 中执行:
      type $env:USERPROFILE\.ssh\id_rsa.pub
      
      若使用 ED25519 则替换为 id_ed25519.pub
    • 若本地无公钥则新建。Windows PowerShell 中执行:
      ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"
      
      若使用 ED25519 则在 Windows PowerShell 中执行:
      ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"
      
      执行后会提示你保存文件的位置,直接按回车使用默认路径。接着提示设置密码短语(passphrase),按回车留空(不设密码)。然后就可以执行获取公钥内容的步骤。
    • 回到计算节点,将公钥写入 ~/.ssh/authorized_keys
      mkdir -p ~/.ssh
      chmod 700 ~/.ssh
      vim ~/.ssh/authorized_keys   # 粘贴公钥内容,保存退出
      chmod 600 ~/.ssh/authorized_keys
      chmod 755 ~                  # 修复主目录权限,避免认证失败
      
  4. 启动用户态 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

  1. 编辑本地 SSH 配置文件配置文件(路径 ~/.ssh/config),加入主机条目:

    Host cluster-dev
        HostName 210.28.xxx.xxx
        User 你的集群用户名
        Port 2222
        IdentityFile ~/.ssh/id_rsa   # 或 id_ed25519,与本地公钥对应
    
  2. 在 VSCode 中连接

    • 安装插件 Remote - SSHSSH(如未安装)。
    • 按下 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)。