如何在 Linux 命令行中检查 CPU 使用率

简介: 【5月更文挑战第8天】

目录:

[TOC]

使用 top 命令

top 是一个强大的实时系统性能监控工具,它提供了对系统资源的实时动态监测。通过 top 命令,你可以查看 CPU、内存、进程等系统资源的使用情况,以及各个进程的详细信息。

在终端中输入以下命令启动 top

top

这将会显示一个实时更新的系统状态面板,其中包含 CPU 使用率、内存使用率、任务队列信息等。

实时监控 CPU 使用率

top 的默认显示中,CPU 使用率是最显眼的一部分。它显示在顶部的第三行,如下所示:

%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

这一行提供了 CPU 使用率的详细信息,包括用户空间使用率(us)、系统空间使用率(sy)、空闲率(id)等。在这个例子中,99.6% 的时间 CPU 处于空闲状态。

top 的输出可能会包含大量信息,因此理解如何解读这些信息是非常重要的。以下是一些关键的信息点:

  • PID(进程ID):每个运行中的进程都有一个唯一的PID。
  • USER:进程属于哪个用户。
  • %CPU:进程使用的 CPU 百分比。
  • TIME+:进程占用 CPU 的累计时间。
  • VIRT、RES、SHR:进程使用的虚拟内存、物理内存、共享内存。

查看系统整体情况

启动 top 后,你将看到一个实时更新的系统状态面板。按键盘上的 q 键可以退出 top

top

根据 CPU 使用率排序进程

按键盘上的 P 键,top 将按照 CPU 使用率高低排序进程。

top -o %CPU

定时刷新显示

使用 -d 选项可以设置 top 的刷新间隔,例如每3秒刷新一次。

top -d 3

查看特定用户的进程

通过 -u 选项,你可以查看特定用户的进程,例如 user1

top -u user1

使用 vmstat 命令

vmstat 是 Virtual Memory Statistics(虚拟内存统计)的缩写,它用于显示虚拟内存、进程、CPU等方面的统计信息。通过 vmstat,你可以查看系统的整体性能以及各个方面的详细数据。

在终端中输入以下命令启动 vmstat

vmstat

这将显示系统的虚拟内存、CPU、进程等信息,并实时更新。

vmstat 的输出包含多个字段,主要包括:

  • procs:显示进程统计信息。
  • memory:显示内存使用统计信息。
  • swap:显示交换空间使用统计信息。
  • io:显示 I/O 统计信息。
  • system:显示系统运行时间及一般性统计信息。
  • cpu:显示 CPU 使用统计信息。

查看系统整体情况

启动 vmstat 后,你将看到一个实时更新的系统状态面板。按键盘上的 q 键可以退出 vmstat

vmstat

设置刷新间隔

使用 -n 选项可以设置 vmstat 的刷新间隔,例如每3秒刷新一次。

vmstat -n 3

查看 CPU 使用率

vmstat 的输出中,cpu 行提供了 CPU 使用率的详细信息。例如,下面的输出表示 CPU 空闲率为96.3%:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 123456  78901  23456    0    0     0     0   12   34  1  2 96  0  0

查看 CPU 上下文切换和中断

vmstat 输出中,in 行表示每秒的上下文切换次数,cs 行表示每秒的中断次数。

vmstat -w

查看磁盘 I/O 统计

io 行提供了磁盘 I/O 的统计信息,包括每秒的读写次数。

vmstat -d

使用 sar 命令

sar 是 System Activity Reporter(系统活动报告)的缩写,它是 sysstat 工具包的一部分,用于收集和报告系统的性能数据,包括 CPU 使用率、内存使用率、磁盘 I/O 等。

在终端中输入以下命令启动 sar

sar

这将显示系统的平均负载、CPU 使用率等信息。

设置时间间隔和次数

使用 -u 选项可以指定 sar 报告 CPU 使用率,而 -n 选项可以设置报告的时间间隔和次数。例如,每隔2秒报告一次,共报告5次:

sar -u 2 5

查看 CPU 使用率历史数据

使用 sar 命令可以查看系统的 CPU 使用率历史数据。下面的命令将报告过去24小时内每隔10分钟的 CPU 使用率:

sar -u -s 00:00:00 -e 23:59:59 -i 600

输出到文件

你也可以将 sar 的输出保存到文件中,以便后续分析。例如,将 CPU 使用率报告保存到文件 cpu_usage.log

sar -u 2 5 > cpu_usage.log

使用 sar 的数据,你可以利用其他工具如 ksarsar2html 等,将性能数据图形化展示,更直观地观察趋势。

sar 收集的历史数据可以帮助你更深入地了解系统的性能特征,进行趋势分析和性能优化。

通过分析历史的 CPU 使用率数据,你可以识别高峰期、低谷期,并采取相应的措施进行性能优化。

sar 也可以报告磁盘 I/O 的性能数据,通过分析这些数据,你可以识别潜在的磁盘瓶颈。

使用 mpstat 命令

mpstat 是在多核 CPU 系统上运行的 sar 的一个前端工具,它提供了更详细的 CPU 使用率信息,包括每个 CPU 核心的利用率。

在终端中输入以下命令启动 mpstat

mpstat

这将显示每个 CPU 核心的使用率、上下文切换、中断等信息。

查看指定 CPU 核心

使用 -P 选项可以指定查看某个 CPU 核心的使用率。例如,查看第二个 CPU 核心的使用率:

mpstat -P 2

查看所有 CPU 核心的使用率

默认情况下,mpstat 将显示所有 CPU 核心的使用率。下面的命令将每隔2秒报告一次所有 CPU 核心的使用率:

mpstat 2

查看多个时间点的 CPU 使用率

使用 -I 选项可以设置报告的时间间隔和次数。例如,每隔5秒报告一次,共报告3次:

mpstat -I 5 3

结合 top 进行监控

mpstat 可以与 top 结合使用,实现对多核 CPU 的更全面监控。例如,使用以下命令:

mpstat -P ALL 2 | top

与前面的工具一样,mpstat 的输出也可以通过图形化工具进行更直观的展示和分析。

使用 perf 命令

perf 是 Linux 系统上的性能分析工具,它可以收集性能数据,并生成详细的报告,帮助你找到系统中的性能瓶颈。

在终端中输入以下命令启动 perf

perf

这将进入 perf 的交互式命令行界面。你可以通过输入不同的命令来执行各种性能分析任务。

收集性能数据

使用 perf record 命令可以开始收集性能数据。例如,收集一个命令的性能数据:

perf record command

生成报告

使用 perf report 命令可以生成性能报告,显示各种性能事件的统计信息。

perf report

收集 CPU 使用率数据

使用 perf 可以收集 CPU 使用率的详细数据,包括函数调用图、指令和缓存的分析等。

perf record -g -a sleep 10

查看调用图

使用 perf 查看函数调用图,以便深入了解代码执行路径。

perf report -g graph

使用 perf script

perf script 可以输出性能数据的脚本,以便进一步分析。

perf script

使用 perf annotate

perf annotate 可以在源代码中显示性能数据,帮助你找到瓶颈。

perf annotate -d /path/to/binary

使用 strace 命令

strace 是一个用于跟踪进程系统调用和信号的命令行工具。通过在程序执行期间截获和记录系统调用的信息,可以帮助你了解程序的运行情况,尤其是在寻找性能问题时非常有用。

在终端中输入以下命令启动 strace

strace command

这将输出程序的系统调用信息,并可帮助你分析程序的执行过程。

输出到文件

使用 -o 选项可以将 strace 的输出保存到文件中:

strace -o output.txt command

输出详细信息

使用 -v 选项可以输出更详细的信息,包括寄存器和内存的内容:

strace -v command

输出调用次数

使用 -c 选项可以统计系统调用的次数:

strace -c command

跟踪特定系统调用

使用 -e 选项可以指定要跟踪的系统调用:

strace -e trace=open,read command

跟踪子进程

使用 -f 选项可以跟踪子进程的系统调用:

strace -f command

结合 top 进行监控

strace 可以与 top 结合使用,实现对程序的更全面监控。

strace -c -p PID

结合 perf 进行性能分析

与前面的工具一样,strace 的输出也可以通过 perf 进行更深入的性能分析。

perf record -e syscalls:sys_enter_openat -g -p PID

总结

  • 实时监控: 使用 top 来实时查看系统资源的使用情况,特别是 CPU 和内存的使用率。
  • 历史数据分析: 使用 sar 定期收集系统性能数据,以便后续分析历史性能趋势。
  • 多核 CPU 监控: 使用 mpstat 来监控多核 CPU 的使用率,了解每个核心的性能状况。
  • 性能分析: 使用 perf 进行更深入的性能分析,包括函数调用图、指令和缓存的分析等。
  • 系统调用跟踪: 使用 strace 跟踪系统调用,解决程序执行中的异常情况。

建议的使用场景:

  • 系统监控: 使用 topvmstatsar 进行实时和历史性能监控,以便了解系统整体的健康状况。
  • CPU 瓶颈分析: 使用 mpstatperfstrace 进行更深入的 CPU 使用率分析,找出潜在的性能瓶颈。
  • 性能优化: 结合 perf 进行性能分析,找到性能瓶颈并进行优化,以提高系统性能。
  • 程序异常分析: 使用 strace 跟踪系统调用,解决程序执行过程中的异常问题,如卡顿、死锁等。
目录
相关文章
|
8天前
|
Linux 虚拟化 iOS开发
Linux系统——远程连接Linux系统(图形化、命令行、使用命令行学习Linux系统、FinalShell)
Linux系统——远程连接Linux系统(图形化、命令行、使用命令行学习Linux系统、FinalShell)
17 3
|
10天前
|
Ubuntu JavaScript Linux
linux 命令行下载BT种子和磁力链接 ubuntu linux 命令行下载种子
linux 命令行下载BT种子和磁力链接 ubuntu linux 命令行下载种子
|
9天前
|
监控 Shell Linux
shell linux中用shell写一个占用CPU的脚本
shell linux中用shell写一个占用CPU的脚本
|
9天前
|
数据可视化 Unix Shell
【Linux】初识命令行
【Linux】初识命令行
|
10天前
|
SQL Java Linux
Linux系统cpu飙升到100%排查方案
Linux系统cpu飙升到100%排查方案
12 0
|
11天前
|
Linux
45. 【Linux教程】文件系统检查
45. 【Linux教程】文件系统检查
18 0
|
16天前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
32 0
|
24天前
|
Shell Linux
【linux课设】自主实现shell命令行解释器
【linux课设】自主实现shell命令行解释器
|
25天前
|
运维 Ubuntu 安全
运维最全linux 命令行操作串口_linux串口命令(2),2024年最新Linux运维源码的Binder权限是如何控制
运维最全linux 命令行操作串口_linux串口命令(2),2024年最新Linux运维源码的Binder权限是如何控制
运维最全linux 命令行操作串口_linux串口命令(2),2024年最新Linux运维源码的Binder权限是如何控制
|
25天前
|
运维 Linux Perl
运维最全linux 命令行操作串口_linux串口命令(1),21年Linux运维面经分享
运维最全linux 命令行操作串口_linux串口命令(1),21年Linux运维面经分享
运维最全linux 命令行操作串口_linux串口命令(1),21年Linux运维面经分享