Linux TOP、HTOP深度详解

系统 Linux
在性能测试中,top 和 htop 是非常有用的工具,可以帮助你实时监控系统资源的使用情况。这些工具可以让你了解 CPU、内存、磁盘 I/O 和网络 I/O 的使用情况,从而帮助你识别性能瓶颈和优化应用程序。

前言

在性能测试中,top 和 htop 是非常有用的工具,可以帮助你实时监控系统资源的使用情况。这些工具可以让你了解 CPU、内存、磁盘 I/O 和网络 I/O 的使用情况,从而帮助你识别性能瓶颈和优化应用程序。

1. 实时监控系统资源

使用 top

启动 top:

top

主要关注点:

CPU 使用率:观察 %Cpu(s) 行,特别是 us(用户空间)、sy(系统空间)和 id(空闲)。

内存使用情况:查看 KiB Mem 和 KiB Swap 行,特别是 free 和 avail Mem。

进程列表:按 P 键以按 CPU 使用率排序,或按 M 键以按内存使用率排序。

交互式命令:

h 或 ?:显示帮助页面。
k:杀死进程(需要输入 PID)。
r:改变进程优先级(需要输入 PID 和新的 nice 值)。
q:退出 top。
1:显示每个 CPU 核心的使用情况。
f:进入字段管理器,可以选择要显示的列。
o:进入排序选项管理器。
W:将当前设置写入配置文件。

使用 htop

启动 htop:

htop

主要关注点:

CPU 使用率:顶部栏显示了每个 CPU 核心的使用情况。

内存使用情况:顶部栏还显示了内存和交换分区的使用情况。

进程列表:可以通过 F6 键选择不同的排序方式,如按 CPU 使用率、内存使用率等。

交互式命令:

F1:显示帮助页面。
F2:进入设置菜单。
F3:搜索进程。
F4:过滤进程。
F5:树状视图。
F6:选择排序方式。
F7 和 F8:增加或减少进程的 nice 值。
F9:杀死进程。
F10:退出 htop。

2. 监控特定进程

如果你知道要监控的进程 ID (PID),可以直接在 top 或 htop 中查看该进程的详细信息。

使用 top 监控特定进程:

top -p

例如:

top -p 1234

使用 htop 监控特定进程:

htop -p

例如:

htop -p 1234

3. 记录性能数据

在长时间运行的性能测试中,记录性能数据是非常重要的。你可以使用 top 或 htop 的批处理模式来记录数据。

使用 top 记录数据:

top -b -n 1 > top_output.txt

这会生成一个单次更新的数据快照,并将其保存到 top_output.txt 文件中。如果需要连续记录,可以结合 watch 命令:

watch -n 1 'top -b -n 1' > top_output.txt

使用 htop 记录数据:

htop 没有直接的批处理模式,但你可以使用脚本来实现类似的功能。例如,使用 script 命令:

script -c "htop" -t 2>&1 | tee htop_output.log

4. 分析数据

一旦你收集了足够的数据,就可以开始分析它们。你可以使用文本编辑器或专门的工具(如 gnuplot)来绘制图表,以便更直观地理解性能趋势。

5. 识别瓶颈

通过监控和记录数据,你可以识别出系统的瓶颈所在。常见的瓶颈包括:

CPU 使用率过高:检查哪些进程占用了大量 CPU 资源。

内存不足:检查哪些进程消耗了大量的内存。

磁盘 I/O 高:检查哪些进程进行了大量的磁盘读写操作。

网络 I/O 高:检查哪些进程发送或接收了大量的网络数据。

进阶

1. 详细 CPU 使用率分析

使用 top

按 CPU 使用率排序:

top -o %CPU

查看每个 CPU 核心的使用情况:

按 1 键显示每个 CPU 核心的使用情况。

检查用户空间和系统空间的 CPU 使用率:

在 %Cpu(s) 行中,us 表示用户空间的 CPU 使用率,sy 表示系统空间的 CPU 使用率。如果 sy 值很高,可能表示内核或驱动程序的问题;如果 us 值很高,可能表示应用程序的计算密集型任务。

使用 htop

按 CPU 使用率排序:

按 F6 键,选择 %CPU 进行排序。

查看每个 CPU 核心的使用情况:

顶部栏会显示每个 CPU 核心的使用情况。

2. 内存使用情况分析

使用 top

按内存使用率排序:

top -o %MEM

查看内存使用情况:

在 KiB Mem 行中,free 表示空闲内存,used 表示已用内存,buff/cache 表示缓存和缓冲区使用的内存。

检查交换分区使用情况:

在 KiB Swap 行中,used 表示已用交换空间,free 表示空闲交换空间。如果交换空间使用率高,可能表示内存不足。

使用 htop

按内存使用率排序:

按 F6 键,选择 %MEM 进行排序。

查看内存使用情况:

顶部栏会显示内存和交换分区的使用情况。

3. 磁盘 I/O 分析

使用 iostat 或 iotop

iostat 可以显示磁盘 I/O 的统计信息。

iostat -x 1

其中 -x 显示扩展统计信息,1 是更新间隔(秒)。

iotop 类似于 top,但专门用于显示磁盘 I/O 的使用情况。

iotop

4. 网络 I/O 分析

使用 iftop 或 nethogs

iftop 可以显示网络流量。

iftop

nethogs 可以显示每个进程的网络带宽使用情况。

nethogs

5. 详细进程分析

使用 top 和 htop

查看特定进程的详细信息:

在 top 或 htop 中,输入进程 ID (PID) 来查看特定进程的详细信息。

查看进程的线程:

在 htop 中,按 F5 键切换到树状视图,可以看到进程及其子进程的关系。

查看进程的命令行参数:

在 top 中,按 c 键显示完整的命令行路径。

在 htop 中,按 F2 进入设置菜单,选择“Display options”,勾选“Show custom thread names”。

6. 保存和分析日志

使用 top 的批处理模式

保存 top 输出到文件:

top -b -n 100 > top_output.txt

其中 -b 表示批处理模式,-n 100 表示记录 100 次更新。

定期记录 top 输出:

使用 cron 或 watch 定期记录 top 输出。

watch -n 5 'top -b -n 1' > top_output.txt

使用 htop 的脚本模式

使用 script 命令记录 htop 输出:

script -c "htop" -t 2>&1 | tee htop_output.log

7. 结合其他工具进行分析

使用 vmstat

vmstat 可以显示虚拟内存统计信息。

vmstat 1

其中 1 是更新间隔(秒)。

使用 mpstat

mpstat 可以显示每个 CPU 核心的统计信息。

mpstat -P ALL 1

其中 -P ALL 表示所有 CPU 核心,1 是更新间隔(秒)。

使用 sar

sysstat 包中的 sar 工具可以收集、报告和保存系统活动信息。

sar -u 1

其中 -u 表示 CPU 使用率,1 是更新间隔(秒)。

8. 生成图表

使用 gnuplot

gnuplot 可以将数据绘制成图表,便于可视化分析。

gnuplot -e "set terminal png; set output 'cpu_usage.png'; plot 'top_output.txt' using 1:9 with lines title 'CPU Usage'"

9. 性能优化建议

优化代码:改进算法,减少不必要的计算。

调整资源配置:增加 CPU 或内存资源。

负载均衡:分散负载到多个服务器。

缓存机制:引入缓存减少数据库或磁盘 I/O。

数据库优化:优化查询,索引设计,减少锁竞争。

网络优化:优化网络配置,减少网络延迟。

责任编辑:武晓燕 来源: 测试开发学习交流
相关推荐

2014-06-04 10:04:11

htoptop

2014-07-24 11:37:54

LinuxTop命令

2024-10-17 10:03:21

2022-11-15 10:03:34

2010-05-19 09:33:27

Linux系统监控工具top

2011-08-23 10:11:10

LinuxTop命令

2010-06-04 10:09:29

Linux 性能检测

2012-05-09 10:52:37

Linux监控命令

2023-03-14 16:44:20

Linuxhtop

2015-04-17 11:29:22

Linux进程管理工具

2020-03-18 08:00:00

LinuxHtop系统性能

2024-03-14 13:46:41

深度学习人工智能

2013-12-17 10:39:24

命令top

2019-08-02 09:26:24

深度学习框架排行榜

2022-11-28 08:18:59

htopLinux

2020-12-09 10:34:51

htopLinux命令

2009-10-27 16:34:02

linux top命令

2023-12-27 14:08:00

LinuxTop命令工具

2022-03-25 09:39:50

LinuxLinux top

2019-12-04 12:28:24

TOP命令Linux
点赞
收藏

51CTO技术栈公众号