strace名是Linux中系统调用的跟踪器,为每个系统调用答应一行摘要,还可以统计系统调用并打印报告

跟踪PID为1884的系统调用 strace -ttt -T -p 1884

-ttt 第一列打印为unix时间戳 -T 打印最后一个字段time,该字段表示系统调用的持续时间 -p PID 需要跟踪进程的ID,也可以执行为命令,这样strace就会启动并跟踪它

跟踪可能会造成过多的性能开销

  • strace采用了基于断点的跟踪,这为所有的系统调用的进入和返回都设置了断点,这是一种侵入式的做法,系统调用率高的应用程序可能会发现性能下降了一个数量级

为了证明这一点,使用strace dd命令时带来了数十倍的性能差距,例:
1、使用strace: strace -c dd if=/dev/zero of=/dev/null bs=1k count=50k
2、取消strace:dd if=/dev/zero of=/dev/null bs=1k count=50k
img_14.png

time: 显示系统CPU时间活跃的百分比
second: 总的系统CPU时间,以秒为单位
usecs/call: 每次调用的平均系统CPU时间,单位是微妙
calls: 系统调用的数量
syscall: 系统调用的名称

直接使用dd命令仅需0.29秒! strace跟踪后需要5.1秒

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-12-05 18:15:25

results matching ""

    No results matching ""