Linux

perf top 与 top 命令区别

·4 分钟阅读·1543 字
📋 目录

perf top 与 top 命令的区别(超清晰、面试 / 排查必备)

我给你用最简单、最直白、最容易记住的方式讲清楚,不绕弯、不堆砌概念


一、先一句话总结(背这个就够)

  • top:看进程 / 线程的 CPU、内存消耗(宏观)
  • perf top:看函数级、指令级的 CPU 消耗(微观、内核 + 应用都能看到)

二、top 命令到底看什么?

作用

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

能看到

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

看不到

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

一句话

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


三、perf top 到底看什么?

作用

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

能看到

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

看不到

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

一句话

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


四、最直观的区别对比表

表格

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

五、举个最经典的例子(立刻懂)

场景:服务器 CPU 100%

用 top

你看到:

plaintext

java 进程 CPU 100%

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

用 perf top

你直接看到:

plaintext

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

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


六、再总结一次(超级好记)

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

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

plaintext

tags: #Linux #perf #性能排查 #面试
题型:简答
难度:中级
题目:perf top top 有什么区别?

精简答案:
1. top 是进程级监控,查看进程CPU、内存等资源占用,无法定位代码级热点;
2. perf top 是函数级性能剖析,能实时显示内核态和用户态的热点函数,直接定位CPU消耗的代码位置。
3. top 看宏观,perf top 看微观。

拓展:
perf 基于性能计数器(PMU),能捕获函数指令级消耗,用于定位程序CPU瓶颈;
top 基于/proc文件系统,用于系统整体资源监控。


关联文档

  • perf 命令详解 — perf 全套工具 -故障排查Linux CPU 100% 排查 — CPU 排查实战