Linux TOP、HTOP深度详解

简介: Linux TOP、HTOP深度详解

前言

在性能测试中,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:将当前设置写入配置文件。• 1.
• 2.
• 3.
• 4.
• 5.
• 6.
• 7.
• 8.

使用 htop

启动 htop:

htop

主要关注点:

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

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

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

交互式命令:

复制

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

2. 监控特定进程

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

使用 top 监控特定进程:

复制

top -p• 1.

例如:

复制

top -p 1234• 1.

使用 htop 监控特定进程:

复制

htop -p• 1.

例如:

复制

htop -p 1234• 1.

3. 记录性能数据

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

使用 top 记录数据:

复制

top -b -n 1 > top_output.txt• 1.

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

复制

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

使用 htop 记录数据:

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

复制

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

4. 分析数据

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

5. 识别瓶颈

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

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

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

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

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

进阶

1. 详细 CPU 使用率分析

使用 top

按 CPU 使用率排序:

复制

top -o %CPU• 1.

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

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

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

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

使用 htop

按 CPU 使用率排序:

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

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

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

2. 内存使用情况分析

使用 top

按内存使用率排序:

复制

top -o %MEM• 1.

查看内存使用情况:

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

检查交换分区使用情况:

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

使用 htop

按内存使用率排序:

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

查看内存使用情况:

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

3. 磁盘 I/O 分析

使用 iostat 或 iotop

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

复制

iostat -x 1• 1.

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

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

iotop

4. 网络 I/O 分析

使用 iftop 或 nethogs

iftop 可以显示网络流量。

复制

iftop• 1.

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

复制

nethogs• 1.

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• 1.

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

定期记录 top 输出:

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

复制

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

使用 htop 的脚本模式

使用 script 命令记录 htop 输出:

复制

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

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

使用 vmstat

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

复制

vmstat 1• 1.

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

使用 mpstat

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

复制

mpstat -P ALL 1• 1.

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

使用 sar

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

复制

sar -u 1• 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'"• 1.

9. 性能优化建议

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

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

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

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

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

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

相关文章
|
3月前
|
监控 Linux
性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
【8月更文挑战第18天】性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
130 4
|
3月前
|
监控 Ubuntu Linux
在Linux中,如何使用top和htop命令?
在Linux中,如何使用top和htop命令?
|
3月前
|
缓存 监控 Ubuntu
在Linux中,如何使用top、htop、vmstat等命令监控系统性能?
在Linux中,如何使用top、htop、vmstat等命令监控系统性能?
|
3月前
|
监控 Linux
Linux 监控工具htop
Linux 监控工具htop
13 0
|
5月前
|
Linux
Linux的top命令是什么,如何使用
【6月更文挑战第30天】Linux的top命令是什么,如何使用
43 1
|
5月前
|
缓存 监控 安全
Linux top命令详解:持续监听进程运行状态
Linux top命令详解:持续监听进程运行状态
120 3
|
5月前
|
监控 安全 Linux
Linux 查看资源占用top参数详解
Linux 查看资源占用top参数详解
43 1
|
4月前
|
缓存 Linux 虚拟化
Linux下top命令指标说明
Linux下top命令指标说明
127 0
|
缓存 安全 Linux
【Linux】top指令的详情介绍
【Linux】top指令的详情介绍
400 0
【Linux】top指令的详情介绍
|
12月前
|
监控 网络协议 Linux
linux top指令
top指令 top - 21:18:54 up 48 min, 2 users, load average: 0.07, 0.02, 0.03 当前时间 系统运行时间 在线用户 负载数 3个总数不能超过70 Tasks: 279 total, 2 running, 277 sleeping, 0 stopped, 0 zombie 进程数 运行中 睡眠进程 停止进程 僵尸进程 -d秒数 默认是3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定健康进程id来仅仅监控某个进程状态 top指令 P以cpu使用率排序 M以内存使用率排序 N以PID排序 q退出top 监控特定用户to
42 0