前言
在服务器上跑大模型、深度学习实验、代码仓库分析任务时,第一步不是马上运行代码,而是先确认服务器资源是否够用。
常见需要查看的资源包括:
gpu 型号和显存 cpu 型号和核心数 内存 ram 和 swap 磁盘空间 系统版本 cuda 驱动 python / pytorch 是否能使用 gpu
这些信息决定了服务器能不能跑模型、能不能加载数据集、能不能支撑并发任务。
可以把服务器理解成一台“实验机器”:
- gpu:主要负责大模型推理和训练
- cpu:负责数据处理、代码解析、进程调度
- 内存:负责临时存放数据
- 磁盘:负责存模型、数据集、代码仓库和实验结果
一、查看 gpu:显卡型号、显存和进程占用
1.1 使用 nvidia-smi 查看 gpu
最常用命令是:
nvidia-smi
它可以查看:
显卡型号 显存总量 显存占用 gpu 使用率 cuda 驱动版本 正在占用 gpu 的进程
例如输出中看到:
nvidia rtx a6000 memory-usage: 22826mib / 49140mib gpu-util: 0%
表示:
显卡型号:nvidia rtx a6000 总显存:约 48gb 当前已用显存:约 22.8gb 当前 gpu 计算利用率:0%
注意:
gpu-util 0% 不代表 gpu 完全空闲。 它只表示当前这一瞬间没有进行计算。 如果 memory-usage 很高,说明显存仍然被程序占着。
可以理解为:
显存占用高:有人把座位占住了 gpu-util 低:这个人现在没干活
1.2 查看 gpu 上有哪些进程
nvidia-smi 底部会显示类似:
pid process name gpu memory 2816656 python 11404mib 3230939 vllm::enginecore 41098mib
这表示:
某个 python 程序占用了约 11gb 显存 某个 vllm 服务占用了约 41gb 显存
如果想看这些进程详情,可以执行:
ps -fp 2816656 ps -fp 3230939
如果进程是自己的,并且确定不用了,可以结束:
kill 进程pid
如果普通 kill 无效,再谨慎使用:
kill -9 进程pid
不要随便 kill 别人的进程。
1.3 案例分析

二、查看 cpu:核心数和线程数
2.1 使用 lscpu 查看 cpu 详情
lscpu
重点看这些字段:
model name:cpu 型号 cpu(s):逻辑线程数 socket(s):物理 cpu 数量 core(s) per socket:每颗 cpu 的物理核心数 thread(s) per core:每个物理核心的线程数
例如:
model name: intel(r) xeon(r) silver 4210r cpu @ 2.40ghz cpu(s): 40 socket(s): 2 core(s) per socket: 10 thread(s) per core: 2
可以理解为:
有 2 颗物理 cpu 每颗 cpu 有 10 个物理核心 每个物理核心有 2 个线程 所以总共有 2 × 10 × 2 = 40 个逻辑线程
2.2 只查看 cpu 逻辑核心数
nproc
如果输出:
40
表示当前系统可用 40 个逻辑 cpu 线程。
cpu 对下面这些任务比较重要:
代码仓库解析 数据预处理 编译项目 多进程并发 运行测试用例 构建索引
但对于大模型推理和训练来说,最关键的通常还是 gpu 显存。
2.3 案例

三、查看内存:ram 和 swap
3.1 使用 free -h 查看内存
free -h
输出类似:
total used free buff/cache available mem: 30gi 14gi 1.2gi 15gi 16gi swap: 47gi 16gi 30gi
重点看:
mem total:物理内存总量 mem used:已使用内存 mem available:当前大概还能用的内存 swap used:已经使用的交换分区
其中最重要的是:
available
它表示当前系统大概还能给新程序使用多少内存。
3.2 free 很小不一定代表内存不足
linux 会把空闲内存拿来做缓存,所以有时 free 很小,但 available 仍然比较大。
例如:
free: 1.2gi available: 16gi
这表示完全空闲的内存只有 1.2gb,但系统实际还能给程序释放出约 16gb 使用。
3.3 swap 是什么
swap 可以理解为“硬盘上的临时内存”。
当物理内存不够用时,系统会把一部分数据临时放到硬盘上。
但是硬盘速度比内存慢很多,所以 swap 用得太多,程序可能会变慢。
如果看到:
swap used: 16gi
说明系统已经有一定内存压力。
3.4 案例

四、查看磁盘空间
4.1 使用 df -h 查看分区空间
df -h
重点看这些列:
size:总容量 used:已使用 avail:剩余空间 use%:使用率 mounted on:挂载位置
例如:
/dev/sdc4 827g 394g 391g 51% / /dev/sda1 2.2t 338g 1.8t 17% /data26 /dev/sdd1 2.2t 1.6t 486g 77% /home
表示:
根目录 / 剩余约 391gb /data26 剩余约 1.8tb /home 剩余约 486gb
如果要存放大模型、数据集、代码仓库和实验输出,优先选择剩余空间更大的数据盘,例如:
/data26
4.2 查看当前目录属于哪个磁盘
df -h .
如果你当前在 /home/likecodebase,输出一般会显示它属于 /home 分区。
4.3 查看当前目录占用大小
du -sh .
查看当前目录下每个文件夹大小:
du -h --max-depth=1 | sort -hr
这个命令很适合找哪个目录最占空间。
4.4 案例

五、查看磁盘挂载结构
5.1 使用 lsblk 查看磁盘结构
lsblk
输出类似:
sda 2.2t └─sda1 2.2t /data26 sdc 893.8g ├─sdc1 476m /boot/efi ├─sdc2 47.7g [swap] ├─sdc3 4.7g /boot └─sdc4 841g / sdd 2.2t └─sdd1 2.2t /home
可以理解为:
sda:数据盘,挂载到 /data26 sdc:系统盘,包含 /、/boot、swap sdd:用户目录盘,挂载到 /home
如果某块盘没有挂载点,比如:
sdb 894.3g
说明它目前没有挂载到系统目录中。普通用户一般不要随便操作这种磁盘,避免误删数据。
5.2 案例

六、查看系统版本和 cuda 环境
6.1 查看 linux 系统版本
cat /etc/os-release
6.2 查看内核版本
uname -a
6.3 查看 cuda 驱动支持版本
nvidia-smi
在顶部可以看到:
driver version: 535.261.03 cuda version: 12.2
这里的 cuda version 表示当前显卡驱动支持的 cuda 版本。
6.4 查看 pytorch 是否能使用 gpu
python - <<'py'
import torch
print("torch version:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
print("gpu count:", torch.cuda.device_count())
if torch.cuda.is_available():
for i in range(torch.cuda.device_count()):
print(i, torch.cuda.get_device_name(i))
py
如果输出:
cuda available: true gpu count: 2 0 nvidia rtx a6000 1 nvidia rtx a6000
说明 pytorch 可以正常识别 gpu。
七、结合实际服务器做一个简要判断
以当前这台服务器为例,可以总结为:
gpu: 2 张 nvidia rtx a6000,每张约 48gb 显存。 cpu: 2 颗 intel xeon silver 4210r。 总共 20 个物理核心,40 个逻辑线程。 内存: 30gb ram,另有 47gb swap。 ram 不算特别大,运行大数据任务时要注意内存压力。 磁盘: /home 剩余约 486gb。 /data26 剩余约 1.8tb,最适合放模型、数据集、仓库和实验结果。 cuda: 驱动支持 cuda 12.2。
如果要运行 qwen 7b 模型:
只做推理:不吃力。 lora / qlora 微调:可以,但最好清理 gpu 显存。 全参数微调:不太建议,显存、内存和优化器开销都比较大。
需要注意:
gpu 显存是否已经被其他进程占用。 系统内存只有 30gb,加载大数据集时不要一次性全部读入内存。 模型和数据建议放到 /data26。
八、一键查看服务器资源的 bash 脚本
8.1 创建脚本
在服务器终端执行:
vim check_server_info.sh
然后粘贴下面脚本。
#!/usr/bin/env bash
# ============================================
# check_server_info.sh
# 一键查看 linux 服务器基础资源信息
# 包括:系统、cpu、内存、gpu、磁盘、python/pytorch gpu
# ============================================
set -u
report_file="server_info_$(date +%y%m%d_%h%m%s).txt"
print_section() {
echo
echo "============================================================"
echo "$1"
echo "============================================================"
}
run_cmd() {
local title="$1"
local cmd="$2"
print_section "$title"
echo "\$ $cmd"
eval "$cmd" 2>&1 || echo "[warn] command failed: $cmd"
}
{
print_section "基础信息"
echo "当前时间: $(date)"
echo "主机名: $(hostname)"
echo "当前用户: $(whoami)"
echo "当前路径: $(pwd)"
if [ -f /etc/os-release ]; then
print_section "系统版本"
cat /etc/os-release
fi
run_cmd "内核版本" "uname -a"
if command -v lscpu >/dev/null 2>&1; then
print_section "cpu 信息"
lscpu | grep -e "architecture|model name|cpu\\(s\\)|thread\\(s\\) per core|core\\(s\\) per socket|socket\\(s\\)|numa node\\(s\\)" || lscpu
echo
echo "逻辑 cpu 核心数: $(nproc 2>/dev/null || echo unknown)"
else
echo "[warn] lscpu command not found"
fi
run_cmd "内存信息" "free -h"
if command -v nvidia-smi >/dev/null 2>&1; then
print_section "gpu 信息:nvidia-smi"
nvidia-smi
print_section "gpu 简要信息"
nvidia-smi --query-gpu=index,name,memory.total,memory.used,memory.free,utilization.gpu,temperature.gpu --format=csv
print_section "gpu 进程信息"
nvidia-smi --query-compute-apps=gpu_uuid,pid,process_name,used_memory --format=csv || true
else
print_section "gpu 信息"
echo "未检测到 nvidia-smi,可能没有 nvidia gpu,或者驱动未安装。"
fi
run_cmd "磁盘空间 df -h" "df -h"
if command -v lsblk >/dev/null 2>&1; then
run_cmd "磁盘挂载结构 lsblk" "lsblk"
fi
print_section "当前目录磁盘占用"
echo "\$ df -h ."
df -h . 2>&1 || true
echo
echo "\$ du -sh ."
du -sh . 2>&1 || echo "[warn] 当前目录过大或无权限,统计失败。"
print_section "python / pytorch gpu 检测"
if command -v python >/dev/null 2>&1; then
python - <<'py'
try:
import sys
print("python executable:", sys.executable)
print("python version:", sys.version.replace("\n", " "))
import torch
print("torch version:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
print("gpu count:", torch.cuda.device_count())
if torch.cuda.is_available():
for i in range(torch.cuda.device_count()):
print(f"gpu {i}:", torch.cuda.get_device_name(i))
except importerror:
print("未安装 pytorch,跳过 torch.cuda 检测。")
except exception as e:
print("pytorch gpu 检测失败:", repr(e))
py
else
echo "未检测到 python 命令。"
fi
print_section "检查完成"
echo "报告文件: $report_file"
} | tee "$report_file"
保存并退出,键盘按下
按 i 进入编辑模式 粘贴脚本 按 esc 输入 :wq 回车保存退出
8.2 给脚本执行权限
chmod +x check_server_info.sh
8.3 一键运行
./check_server_info.sh
运行后,它会在当前目录生成一个报告文件,例如:
server_info_20260604_224500.txt
以后如果想发给别人分析服务器配置,直接发这个 txt 文件即可。
九、脚本输出怎么看
9.1 看 gpu
重点看:
gpu name memory.total memory.used memory.free utilization.gpu
例如:
nvidia rtx a6000, 49140 mib, 22826 mib, 26314 mib, 0 %
表示:
总显存约 48gb 已用约 22.8gb 剩余约 26gb 当前计算利用率 0%
9.2 看 cpu
重点看:
model name cpu(s) thread(s) per core core(s) per socket socket(s)
例如:
cpu(s): 40 socket(s): 2 core(s) per socket: 10 thread(s) per core: 2
表示:
2 颗 cpu 每颗 10 个物理核心 每核 2 线程 总共 40 个逻辑线程
9.3 看内存
重点看:
mem total mem available swap used
- 如果
available很小,说明可用内存紧张。 - 如果
swap used很大,说明系统可能已经发生过内存压力。
9.4 看磁盘
重点看:
mounted on avail use%
例如:
/data26 avail 1.8t /home avail 486g
说明大数据更适合放到 /data26。
总结
查看服务器资源时,最常用的命令可以记住这几个:
nvidia-smi lscpu free -h df -h lsblk
它们分别对应:
nvidia-smi:查看 gpu 和显存 lscpu:查看 cpu free -h:查看内存 df -h:查看磁盘空间 lsblk:查看磁盘挂载结构
对于大模型实验来说,最重要的是:
显存够不够 gpu 是否被别人占用 内存是否紧张 磁盘是否有足够空间存模型和数据
以当前服务器为例,2 张 rtx a6000 是非常好的 gpu 配置,运行 qwen 7b 推理基本不吃力;但系统内存只有 30gb,运行大规模数据处理或训练时要注意内存压力。
一句话总结:
跑实验之前,先看资源;显存决定模型能不能跑,内存决定数据能不能撑住,磁盘决定模型和数据能不能放得下。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论