cpu数据相差大

在使用top和ps命令查看进程相关数据时,发现一些数据相差太大,给排查问题造成了困扰。如下图,top命令显示systemd进程%CPU数据是54.1,而ps命令显示systemd进程%CPU数据是37.7。

top命令和ps命令数据统计区别_监控

top命令和ps命令数据统计区别_监控_02

统计维度不一样

为了弄清楚指标的含义,我查看了top和ps的帮助文档,发现了问题所在,这两个命令统计的维度不一样导致了数据差异性。以下是两个命令的各个指标含义。

top命令

VIRT

进程使用的虚拟内存总量(KB),包含了被swap out的代码、数据、共享库

RES

进程使用的常驻物理内存总量(KB),不包含swap out

SHR

进程可用的共享内存(KB)

S

进程状态:D(不可中断睡眠)、R(运行)、S(睡眠)、Z(僵尸)

%CPU

进程当前的cpu使用率

%MEM

进程当前物理内存使用率。

ps命令

%CPU

进程自启动以来的cpu平均使用率

%MEM

进程当前物理内存使用率,RSS/物理总内存

VSZ

进程使用的虚拟内存总量(KB),包含了被swap out的代码、数据、共享库

RSS

进程使用的常驻物理内存总量(KB),不包含swap out