简介:本文深入讲解服务器CPU与GPU占用率监控方法,涵盖Linux/Windows系统下实用命令及工具,重点解析GPU监控命令的详细用法,帮助开发者高效诊断性能瓶颈。
在服务器运维和开发过程中,实时监控CPU和GPU的占用率是保障系统稳定运行的关键。无论是训练深度学习模型、运行高性能计算任务,还是部署大规模Web服务,资源占用异常都可能导致性能下降甚至服务中断。通过监控工具和命令,开发者可以快速定位资源瓶颈,优化任务调度,提升整体效率。
CPU是服务器的核心计算资源,其占用率直接反映了当前任务的计算负载。通过监控CPU占用,可以:
对于依赖GPU加速的任务(如深度学习、3D渲染),GPU资源的合理分配至关重要。监控GPU占用可以:
top命令:实时动态视图top是Linux下最常用的系统监控工具,提供实时的CPU、内存、进程等信息。运行后按1可展开显示每个CPU核心的利用率。
top
关键字段解析:
%Cpu(s):用户态(us)、内核态(sy)、空闲(id)等占比。PID:进程ID,可用于定位高负载进程。htop:增强版交互工具htop是top的增强版,支持彩色显示、鼠标操作和更详细的进程信息。需先安装:
sudo apt install htop # Debian/Ubuntusudo yum install htop # CentOS/RHEL
运行后可直接通过方向键选择进程,按F9可终止进程。
mpstat:多核CPU统计mpstat(需安装sysstat包)可查看每个CPU核心的详细统计,适合分析多线程任务的负载均衡。
mpstat -P ALL 1 # 每秒刷新一次所有核心数据
输出示例:
%usr %nice %sys %iowait %irq %soft %steal %idle98.1 0.0 1.2 0.0 0.0 0.0 0.0 0.7 # 核心0的占用
按Ctrl+Shift+Esc打开任务管理器,切换到“性能”标签页,可查看CPU整体利用率及每个逻辑核心的占用曲线。
通过PowerShell脚本可获取更详细的CPU数据:
Get-Counter '\Processor(_Total)\% Processor Time' | Select-Object -ExpandProperty CounterSamples | Select-Object InstanceName, CookedValue
nvidia-smi:核心监控工具nvidia-smi是NVIDIA官方提供的GPU监控工具,可查看GPU利用率、显存占用、温度等关键信息。
nvidia-smi
输出示例:
+-----------------------------------------------------------------------------+| NVIDIA-SMI 515.65.01 Driver Version: 515.65.01 CUDA Version: 11.7 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 || N/A 62C P0 56W / 70W | 3245MiB / 15109MiB | 98% Default |+-------------------------------+----------------------+----------------------+
关键字段:
GPU-Util:GPU计算核心的利用率(百分比)。Memory-Usage:显存占用情况。Temp:GPU温度,过高可能导致降频。通过watch命令可定时刷新nvidia-smi输出:
watch -n 1 nvidia-smi # 每秒刷新一次
若需记录历史数据,可结合cron和脚本将输出写入文件:
#!/bin/bashnvidia-smi >> /var/log/gpu_usage.log
nvtop:GPU版的htopnvtop提供类似htop的交互式界面,支持多GPU监控。安装方式:
sudo apt install nvtop # Ubuntu
运行后按g可切换GPU视图,按q退出。
对于AMD GPU,可使用rocm-smi(ROCm平台)或radeontop:
rocm-smi --showuse # 显示GPU利用率radeontop # 交互式监控工具(需安装)
编写Shell脚本定期采集CPU和GPU数据,并生成可视化报告:
#!/bin/bashTIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')GPU_USAGE=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader | awk '{print $1}')echo "$TIMESTAMP, CPU: $CPU_USAGE%, GPU: $GPU_USAGE%" >> /var/log/resource_usage.csv
对于大规模服务器集群,建议部署Prometheus收集指标,通过Grafana展示可视化面板。需配置node_exporter(CPU)和dcgm-exporter(NVIDIA GPU)的Exporter。
设置阈值告警(如CPU持续>90%或GPU>95%),通过邮件或企业微信通知运维人员。例如,使用cron+awk检测日志并触发告警:
if awk -F, '{if ($3 > 95) exit 1}' /var/log/resource_usage.csv; thenecho "GPU占用过高!" | mail -s "告警" admin@example.comfi
nvidia-smi命令未找到/usr/bin在PATH中。nvidia-smi dmon查看详细GPU指标。nvprof分析CUDA内核执行时间。CUDA_VISIBLE_DEVICES环境变量指定GPU。nvidia-smi的Volatile GPU-Util字段,调整任务分配。掌握服务器CPU和GPU的监控命令是运维和开发的基础技能。通过top、htop、nvidia-smi等工具,可以实时获取资源占用情况;结合脚本自动化和可视化方案,能进一步提升监控效率。对于深度学习场景,还需关注显存占用、CUDA内核效率等高级指标。未来,随着AI算力的普及,更精细化的资源监控和调度将成为关键竞争力。