如何在 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 跟踪系统调用,解决程序执行过程中的异常问题,如卡顿、死锁等。
目录
相关文章
|
4天前
|
SQL 数据管理 网络安全
数据管理DMS操作报错合集之DMS的CPU使用率达到100%,如何解决
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
4天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
48 4
|
4天前
|
监控 数据可视化 Java
Elasitcsearch CPU 使用率突然飙升,怎么办?
Elasitcsearch CPU 使用率突然飙升,怎么办?
19 1
|
4天前
|
监控 Linux Shell
|
4天前
|
Shell Linux
【Linux】Bash支持各种指令选项的原理:命令行参数
【Linux】Bash支持各种指令选项的原理:命令行参数
|
4天前
|
运维 监控 Linux
【专栏】Linux中的ping命令不仅用于基础网络连通性检查,Linux 中这些高级 ping 命令可以提高工作效率!
【4月更文挑战第28天】Linux中的ping命令不仅用于基础网络连通性检查,还有许多高级功能。了解如`-c`(设置数据包数量)、`-i`(设置间隔时间)和`-w`(设置超时时间)等选项能提升效率。进阶技巧包括自定义数据包大小(`-s`)、详细统计信息(`-v`)、持续ping(`-t`)、指定源地址(`-S`)和多目标ping。这些在网络性能测试、故障排查和监控中极其有用。注意权限、参数选择,并结合其他工具以准确解读结果。提升网络管理技能,善用ping命令的全部潜力。
|
4天前
|
监控 Linux
【专栏】在 Linux 中,掌握检查内存使用情况至关重要,因为内存问题可能导致系统性能下降甚至崩溃。这 5 个命令堪称绝了!
【4月更文挑战第28天】在 Linux 中,掌握检查内存使用情况至关重要,因为内存问题可能导致系统性能下降甚至崩溃。本文介绍了 5 个常用的检查内存命令:1) `free` 提供内存和交换区的详细信息;2) `top` 显示进程信息及内存使用;3) `vmstat` 输出系统综合信息,包括内存动态变化;4) `pidstat` 监控特定进程的内存使用;5) `/proc/meminfo` 文件提供系统内存详细数据。了解和使用这些命令能帮助用户及时发现并解决内存相关问题,确保系统稳定运行。
|
4天前
|
安全 算法 Linux
【专栏】Linux 服务器还有漏洞?OpenVAS 是一款开源的漏洞扫描工具,用于全面评估 Linux 服务器安全
【4月更文挑战第28天】OpenVAS 是一款开源的漏洞扫描工具,用于全面评估 Linux 服务器安全。它具有全面性、准确性和实时性的特点,能扫描各种设备并及时发现安全漏洞。使用 OpenVAS 包括安装、配置和执行扫描,以及分析结果并采取修复措施。在使用过程中应注意扫描时间、范围和策略的选择。通过定期检查和修复漏洞,结合其他安全措施,可以提升服务器安全性。OpenVAS 是保障 Linux 服务器安全的重要工具,但安全维护也需要持续学习和适应新挑战。
|
4天前
|
监控 Linux 开发者
【专栏】在Linux系统管理中,终止不响应或资源消耗大的进程至关重要
【4月更文挑战第28天】在Linux系统管理中,终止不响应或资源消耗大的进程至关重要。本文介绍了如何查找、终止和监控进程。使用`ps`和`grep`组合查找特定进程,或通过`pgrep`获取PID。使用`kill`命令(默认发送TERM信号)终止进程,如需强制终止,可使用`kill -9`发送`SIGKILL`信号。监控进程可借助`ps`、`top`、`htop`及`watch`命令。理解这些技能将有助于更有效地管理Linux进程。
|
4天前
|
Ubuntu 安全 Linux
【Linux命令行艺术】1. 初见命令行
【Linux命令行艺术】1. 初见命令行