- 首页 >
- 问答 >
-
云计算 >
- Debian cpustat在虚拟机中的使用技巧
Debian cpustat在虚拟机中的使用技巧
小樊
42
2025-11-15 01:23:22
Debian 虚拟机中 cpustat 使用技巧
一 工具选择与安装
- 在 Debian 中存在两个常被混用的工具:
- cpustat(sysstat):系统自带的 CPU 统计工具,适合做系统层面的利用率与瓶颈定位。
- cpustat(Uber):用 Go 编写、基于 netlink taskstats 的进程级工具,能按进程/用户展示更细的 CPU 占用。
- 安装与选择建议:
- 系统监控与瓶颈定位:安装 sysstat 的 cpustat
- 命令:sudo apt update && sudo apt install sysstat
- 进程级热点定位:安装 Uber 的 cpustat
- 命令:sudo apt install golang && go install github.com/uber-common/cpustat@latest
- 注意:Uber 版通常需要 root 权限(taskstats 接口)。
二 快速上手与常用命令
- sysstat 版(系统级)
- 实时查看整体与各核:cpustat -c -p ALL
- 按间隔采样:cpustat -i 2 -c 5(每 2 秒一次,共 5 次)
- 持续刷新:watch -n 1 cpustat -c
- 输出到文件:cpustat -c > cpu_usage.txt
- Uber 版(进程级)
- 默认显示前 10 个进程:sudo cpustat
- 指定用户:sudo cpustat -u <用户名>
- 指定展示数量:sudo cpustat -n 20
- 滚动/实时刷新:sudo cpustat -r
- 写入采样文件:sudo cpustat -cpuprofile cpuprof.txt
- 提示:Uber 版命令名与 sysstat 版相同,若已安装两者,建议用 /usr/bin/cpustat 与 ~/go/bin/cpustat 区分调用。
三 虚拟机场景的关键指标与判读
- 关注以下关键列(不同版本列名略有差异):
- %usr / %system:用户态/内核态占用,持续偏高说明计算密集或系统调用频繁。
- %idle:空闲比例,过低说明 CPU 饱和。
- %iowait:I/O 等待,偏高多为存储/后端性能瓶颈。
- %steal:虚拟化“偷取时间”,在虚拟机中尤为重要;偏高通常意味着宿主机资源紧张或过度超卖,可考虑调整 vCPU 数量 或迁移到资源更充足的宿主机。
- 实操建议:
- 同时观察 %iowait 与存储延迟(如 iostat),区分计算密集与 I/O 瓶颈。
- 若 %steal 高企,优先核查宿主机负载、调度策略与配额。
四 高效排查与优化流程
- 系统级快速扫描
- 全核与整体:cpustat -c -p ALL
- 短周期采样定位波动:cpustat -i 1 -c 10
- 进程级热点定位(Uber 版)
- 全局热点:sudo cpustat -n 20
- 指定用户:sudo cpustat -u <用户名>
- 持久化与复盘
- 记录日志:cpustat -c > cpu_usage.txt 或 sudo cpustat -cpuprofile cpuprof.txt
- 结合其他工具交叉验证:vmstat 1 10、mpstat -P ALL 1 5、top/htop
- 优化动作
- 计算密集:优化应用/SQL、提升 vCPU 配额或绑核(NUMA 亲和)。
- I/O 密集:优化存储(IOPS/吞吐/队列)、合并写、使用缓存/更快后端。
- 高 steal:减少超卖、调整宿主机负载、迁移实例。
五 常见问题与排错
- 权限不足导致无数据或报错
- Uber 版需 root/taskstats:使用 sudo cpustat;sysstat 版多数场景普通用户也可用,但部分统计可能需要提升权限。
- 两个同名命令混淆
- 用 which -a cpustat 查看路径;必要时用 /usr/bin/cpustat(sysstat)与 ~/go/bin/cpustat(Uber)显式调用。
- 采样间隔与次数
- 使用 -i <秒> -c <次数> 控制输出密度,便于定位瞬时抖动与稳态占用。
- 输出重定向与复盘
- 将 cpustat -c 或 sudo cpustat -cpuprofile 的结果重定向到文件,便于离线分析与对比。