3.5 KiB
3.5 KiB
极大可能是同一个原因,而且在无头(headless)服务器上这个问题比 Windows 更常见。以下是分析和完整解决方案:
原因分析
Windows 下的"黑屏/闪屏需要设为最高性能",根本原因是 NVIDIA 驱动的电源管理自动降频——显卡在空闲时降到低功率 P 状态,在被突然调用时来不及升频,导致信号丢失或卡死。Linux 上完全相同的机制叫做 Persistence Mode(持久化模式),默认是关闭的 。 reddit
你现在 SSH 卡死,很可能是:
- 显卡在空闲时进入省电睡眠状态,驱动连接断开
- 由于服务器没有显示器,驱动没有持续活跃的理由,更容易触发
- 系统也可能因此 hang 住,导致 SSH 连接超时 forum.livepeer
第一步:物理重启恢复 SSH
当前 SSH 连不上,需要先让服务器恢复:
- 直接按主机电源键短按(触发正常关机),或长按强制重启
- 重启后立即 SSH 进去,在系统空闲时执行下面的设置
第二步:开机后立即设置(SSH 进去后)
# 开启持久化模式(相当于 Windows 的"最高性能")
sudo nvidia-smi -pm 1
# 验证是否生效(Persistence-M 应显示 On)
nvidia-smi
但 -pm 1 重启后会失效,需要永久配置。
第三步:永久开启持久化模式(开机自启)
# 启用 nvidia-persistenced 守护进程服务
sudo systemctl enable nvidia-persistenced
sudo systemctl start nvidia-persistenced
# 验证服务状态
sudo systemctl status nvidia-persistenced
如果服务起来后持久化仍然是 Off,编辑服务文件修复:
sudo nano /lib/systemd/system/nvidia-persistenced.service
找到这一行:
ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced --no-persistence-mode --verbose
改为:
ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced --persistence-mode --verbose
sudo systemctl daemon-reload
sudo systemctl restart nvidia-persistenced
sudo nvidia-smi # 确认 Persistence-M: On
第四步:额外防护——禁用显卡自动省电
对于 AI 推理服务器,建议还要锁定电源上限,防止动态调频 : wikipedia.jakami
# 设置最大性能模式(等同 Windows 控制面板"最高性能优先")
sudo nvidia-smi --auto-boost-default=0
sudo nvidia-smi -ac 6251,1695 # RTX 3070 的 Memory,Graphics 最大频率
# 写入开机启动(加到 /etc/rc.local 或 systemd 服务中)
sudo tee /etc/systemd/system/nvidia-perf.service <<'EOF'
[Unit]
Description=NVIDIA Performance Mode
After=nvidia-persistenced.service
[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pm 1
ExecStart=/usr/bin/nvidia-smi --auto-boost-default=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable nvidia-perf.service
sudo systemctl start nvidia-perf.service
设置完成后的预期状态
nvidia-smi 输出中:
Persistence-M: On ← 持久化开启
Power: 46W / 220W ← 功率正常
GPU-Util: 0% ← 空闲但驱动不会断连
完成以上设置后服务器应当稳定,不再出现 SSH 卡死的情况,之后可以继续 vLLM 的部署。