linux - 有没有办法使用 perf 工具查找流程中各个功能的性能?

标签 linux function profiling perf

我正在尝试获取流程中各个功能的性能。我怎样才能使用 perf 工具做到这一点?还有其他工具吗?

例如,假设 main 函数调用函数 A 、 B 、 C 。我想分别获得主要功能以及功能 A、B、C 的性能。

有没有关于perf源代码的好文档?

谢谢。

最佳答案

您想要做的是用户空间探测。 Perf 只能做一部分。 尝试 sudo perf top -p [pid] 然后观察记分牌。它将显示按 CPU 使用率排序的函数列表。这是基准测试期间 redis 的快照:

perf top profiling redis

如果你想获得更多用户空间函数的信息,比如 IO 使用、延迟、内存使用,我强烈建议你使用 Systemtap。它既是脚本语言,也是在基于 Linux 内核的操作系统上分析程序的工具。这是一个关于它的教程:

http://qqibrow.github.io/performance-profiling-with-systemtap/

而且您不需要成为 systemtap 脚本专家,网上有很多适合您的好脚本。 例如,有一个使用它来找出特定功能的延迟的示例。

https://github.com/openresty/stapxx#func-latency-distr

关于linux - 有没有办法使用 perf 工具查找流程中各个功能的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749804/

相关文章:

linux - 如何将远程 Linux 服务器日志文件跟踪到本地 Windows 计算机

python - botocore.exceptions.WaiterError : Waiter StackCreateComplete failed: Max attempts exceeded

javascript - 如何从javascript中的onclick访问vue函数?

linux - 如何获取 perf stat 列出所有可能的事件

java - 监控java程序的执行时间分布

ruby - 为什么在 Ruby 中使用 String#count 比使用 String#chars 计算字母更快?

python - 使用 python 或 linux 终端连接 wifi

linux - 为什么 WHICH 命令没有给出预期的路径?

php - 我应该将 $mysqli 变量传递给每个函数吗?

php - 从函数调用 PHP 对象方法