Linux

perf top 与 top 命令区别

·4 分钟阅读·1416 字

汇总perf top 与 top 命令区别的常用场景、参数用法与排查示例

📋 目录

perf top 与 top 命令区别

1. top 命令到底看什么?

2. 作用

系统级、进程级资源监控 看谁在吃 CPU、吃内存、吃 IO。

3. 能看到

  • 哪个进程 CPU 最高
  • 哪个进程内存最高
  • load average、us/sy/id 时间片
  • 进程 PID、USER、% CPU、% MEM

4. 看不到

  • 进程里哪个函数在耗 CPU
  • 内核里哪个函数在耗 CPU
  • 是锁?是循环?是系统调用?还是业务代码?
  • 完全看不到代码层面的热点

5. 一句话

top 只能告诉你:谁胖。 但不能告诉你:哪里胖、为什么胖。


6. perf top 到底看什么?

7. 作用

实时函数级 CPU 热点分析 Linux 下最强大的性能剖析工具。

8. 能看到

  • 内核函数中哪些最耗 CPU
  • 应用程序函数哪些最耗 CPU
  • Java/Go/C++ 代码里的热点函数
  • 系统调用、锁、内存拷贝、网络收发、磁盘读写等

9. 看不到

  • 内存占用(不看内存)
  • 磁盘使用率
  • 网络连接数

10. 一句话

perf top 能直接告诉你: 代码里哪一行、哪个函数在疯狂烧 CPU!


11. 最直观的区别对比表

表格

维度topperf top
观测层级进程 / 线程函数 / 指令
能定位问题哪个进程占 CPU进程里哪个函数占 CPU
能看内核?只能看总 sy%能看到内核具体函数
能看应用代码?不能能看到应用函数(Java/Go/C++)
用途宏观监控性能瓶颈深度排查
定位速度只能定位到进程直接定位到代码行

12. 举个最经典的例子(立刻懂)

13. 场景:服务器 CPU 100%

13.1. 用 top

你看到:

plaintext


java 进程 CPU 100%

但你不知道为什么,是 GC?是死循环?是锁?

13.2. 用 perf top

你直接看到:

plaintext


90.00%  [.] java.util.HashMap.getNode

哦!原来是 HashMap 冲突严重、链表循环导致 CPU 跑满。


14. 再总结一次(超级好记)

  • top = 看进程
  • perf top = 看函数
  • top = 宏观
  • perf top = 微观
  • top = 知道谁在耗 CPU
  • perf top = 知道哪段代码在耗 CPU

15. 面试标准答案(可直接存入知识库)

plaintext


tags: #Linux #perf #性能排查 #面试

题型:简答

难度:中级

题目:perf top 和 top 有什么区别?

精简答案:

1. top 是进程级监控,查看进程CPU、内存等资源占用,无法定位代码级热点;

2. perf top 是函数级性能剖析,能实时显示内核态和用户态的热点函数,直接定位CPU消耗的代码位置。

3. top 看宏观,perf top 看微观。

拓展:

perf 基于性能计数器(PMU),能捕获函数指令级消耗,用于定位程序CPU瓶颈;

top 基于/proc文件系统,用于系统整体资源监控。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro