返回

ps vs top:显露CPU占用率中的区别

开发工具

揭秘 CPU 占用率统计:ps 与 top 之间的较量

导读:

作为系统性能衡量的重要指标,CPU 占用率一直备受关注。本文将深入解析 Linux 系统中常用的两个命令行工具——ps 和 top,揭示它们在统计 CPU 占用率方面的异同,助力读者全面掌握 CPU 利用情况。

CPU 占用率:定义与意义

CPU 占用率,顾名思义,是指 CPU 在特定时间段内执行进程所占用的百分比。它反映了 CPU 的利用率,是发现系统性能瓶颈并进行优化调整的关键数据。

ps 命令:进程视角下的 CPU 统计

ps 命令是 Linux 系统中不可或缺的进程管理工具。它提供正在运行进程的详细信息,包括进程 ID、进程名、CPU 占用率和内存占用率等。

top 命令:实时监控 CPU 使用率

top 命令也是 Linux 系统中常用的进程管理工具。它以动态图表的方式实时显示进程列表及其详细信息,包括 CPU 占用率、内存占用率等。

统计方式的异同

尽管 ps 和 top 命令都可以统计 CPU 占用率,但它们采用的方式略有不同:

1. 统计粒度:

ps 命令从进程级别统计 CPU 占用率,而 top 命令可以统计进程和线程级别的 CPU 占用率。

2. 统计时间:

ps 命令统计进程在其生命周期内的平均 CPU 占用率,而 top 命令统计进程当前时刻的实时 CPU 占用率。

3. 显示方式:

ps 命令以列表形式呈现进程信息,而 top 命令则以表格形式展示进程详细信息。

选择合适的统计方式

不同场景需要采用不同的统计方式:

  • 平均 CPU 占用率: 使用 ps 命令
  • 实时 CPU 占用率: 使用 top 命令
  • 进程和线程级别 CPU 占用率: 使用 top 命令

示例对比:

# 使用 ps 命令统计进程 CPU 占用率
ps aux | head -5

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   6684   500 ?        Ss   Aug09   0:00 init [3]
root         2  0.0  0.0      0     0 ?        S    Aug09   0:00 kthreadd
root         3  0.0  0.0      0     0 ?        S    Aug09   0:00 ksoftirqd/0
root         4  0.0  0.0      0     0 ?        S    Aug09   0:00 ksoftirqd/1
root         5  0.0  0.0      0     0 ?        S    Aug09   0:00 kworker/0:1


# 使用 top 命令统计实时 CPU 占用率
top - 10:17:57 up 3 days, 22:04,  5 users,  load average: 0.08, 0.13, 0.13
Tasks: 249 total,   1 running, 248 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  0.8 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1631848 total,  1336072 free,   295776 used,    0 avail,   182480 swap,   147444 free
KiB Swap:  182480 total,   147444 free,    35036 used.   993280 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND