linux 开发小记 perf strace

打印 上一主题 下一主题

主题 976|帖子 976|积分 2928

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
strace

strace 是一个调试工具,用于跟踪步伐执行期间所发出的系统调用(system calls)和信号(signals)。它可以捕捉和表现步伐怎样与操纵系统举行交互,查看步伐与内核之间的通讯,从而帮助分析步伐的行为和性能。


  • 调试系统调用:可以跟踪步伐发出的所有系统调用,比方 open(), read(), write(), malloc(), exit() 等,帮助发现潜伏的错误或性能瓶颈。
  • 捕捉文件操纵:查看步伐对文件的读写操纵,如文件打开、关闭、读取、写入等。
  • 分析库函数调用:在步伐调用的库函数背后,strace 可以帮助你看到这些函数的系统调用行为。比方,分析步伐在执行文件操纵时底层的系统调用。
  • 调试信号处理:strace 还可以跟踪步伐怎样接收和处理信号,好比 SIGSEGV(段错误)等。
strace语法

  1. strace ./my_program
复制代码
这会启动 my_program,并且打印出它发出的系统调用和信号。
只追踪特定类型的系统调用:

这会仅表现 open(), read(), 和 write() 系统调用
  1. strace -e trace=open,read,write ./my_program
复制代码
将输出写入文件:

  1. strace -o output.txt ./my_program
复制代码
追踪某个历程

  1. strace -p <pid>
复制代码
这会附加到已经在运行的历程 pid 上,并开始追踪其系统调用。
过滤某个系统调用:

  1. strace -e trace=network ./my_program
复制代码
只表现与网络相干的系统调用,如 socket(), bind(), send(), recv() 等。
总结

优点:


  • strace 能帮助你查看步伐的具体行为,尤其是在调试时,有助于发现无法预见的错误或不明确的系统交互。
  • 可以追踪与操纵系统直接交互的部分,对于性能瓶颈或资源泄漏也能提供很多线索。
    限定:
  • 由于 strace 捕捉了所有的系统调用,所以大概对步伐的执行产生一定的性能影响。尤其在大量系统调用的步伐中,性能影响较大。
  • 对于多线程步伐,strace 大概无法完全准确地表现线程间的操纵,尤其是涉及同步机制的系统调用。
perf—— 性能分析工具

perf 是 Linux 内核提供的性能分析工具,用于收集和分析系统和应用步伐的性能数据。它可以帮助开发人员检测步伐中的性能瓶颈,包罗 CPU 利用率、内存访问模式、I/O 性能等。
常见用途:


  • 性能计数器:perf 可以收集各种性能计数器数据,如 CPU 周期、指令计数、缓存掷中率等。
  • 函数级别分析:可以分析步伐中各个函数的性能,查看哪些函数最斲丧时间,帮助开发人员优化代码。
  • 热门分析:perf 可以用来找出步伐中的性能热门(比方哪些函数或代码路径是性能瓶颈)。
  • 系统调用统计:perf 可以分析系统调用的性能,找出系统调用的瓶颈。
常见命令:


  • 基本性能采样
    1. perf stat ./my_program
    复制代码
    统计 my_program 运行时的各种性能数据,包罗 CPU 利用情况、上下文切换、页面错误等。
  • 函数级性能分析
    1. perf record -g ./my_program
    2. perf report
    复制代码
    利用 perf record 记录步伐的性能数据,并利用 perf report 查看步伐的热门(比方哪些函数耗时最多)。
  • CPU 焦点分析
    1. perf top
    复制代码
    通过实时采样,表现当前系统中 CPU 占用最多的函数和代码路径。
  • 查看特定系统调用的性能
    1. perf trace
    复制代码
    雷同于 strace,但是更侧重于性能数据,可以表现系统调用的频率、时长等。
  • 多历程和多线程分析
    1. perf record -p <pid> -g
    2. perf report
    复制代码
    分析某个历程或线程的性能,记录其调用栈。
  • 查看特定性能变乱
    1. perf stat -e cache-misses,cache-references ./my_program
    复制代码
    查看缓存缺失变乱和缓存引用变乱的统计信息。
优点:



  • perf 可以或许精确地捕捉 CPU 性能变乱和系统级别的性能题目,并以多种方式展示数据,帮助开发者快速定位性能瓶颈。
  • 支持多种性能分析模式,从简朴的统计到复杂的采样,满足不同的分析需求。
  • 对性能分析影响较小(相对 strace 来说)。
限定:



  • 需要一些系统权限来访问某些性能计数器。
  • 对于一些高频变乱,perf 大概会在采样时引入一定的开销。
  • 分析结果大概需要一定的履历来解读,尤其是当涉及到复杂的多线程和多历程分析时。

比力和选择

特性straceperf用途跟踪系统调用和信号性能分析和计数器收集分析粒度系统调用级别函数级别、CPU 变乱、内存访问等性能影响较大,尤其是在频仍调用时相对较小,采样和计数器不会过度影响步伐运行应用场景调试和错误跟踪,查看系统调用细节性能分析,找出性能瓶颈,优化代码支持的功能跟踪系统调用、信号、文件操纵等性能采样、热门分析、缓存访问、内存管理等

  • 选择 strace:当你需要调试步伐的系统调用、跟踪文件和网络操纵,或者需要了解步伐与操纵系统之间的交互时,strace 是一个非常有用的工具。
  • 选择 perf:当你需要深入分析步伐的性能,尤其是 CPU 利用、内存访问、I/O 性能等方面时,perf 是一个更强大的工具,可以帮助你精准定位性能瓶颈。
这两个工具可以互补利用,帮助你从不同的角度分析和优化步伐。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表