• lizh
    2019-03-20
    早些时间整理过的一篇文章,和这个主题很match,分享在这里^_^。https://leezhenghui.github.io/linux/2019/03/05/exploring-usdt-on-linux.html

    作者回复: 👍谢谢分享

    
     21
  • 我来也
    2019-03-20
    [D50打卡]
    课后思考题,我的思考,不一定准确.
    我觉得昨天的perf和火焰图,是采样. 而今天的ftrace是实实在在的分析每次一的调用.
    虽然都可以看调用堆栈和耗时比例. 但是ftrace应该是非常准确,而perf只是一个采样,比如采样频率1%.

    我觉得找大方向时,使用perf和火焰图, 找具体问题时,用ftrace.毕竟ftrace需要知道调用的系统函数.
    ftrace需要追踪的信息可以来源于perf的分析结果.
    展开

    作者回复: 嗯嗯,非常准确。函数跟踪需要实现知道函数名,而perf/火焰图就可以找出热点函数。

     1
     19
  • Huayra
    2019-03-20
    将性能优化大师Brendan Gregg的blog阅读一遍,就能够更深刻地理解这一章。据说,OpenResty的作者张亦春也阅读过Brendan Gregg的所有博客,他现在更进一步地开发了一个将高级编程语言编译成动态追踪脚本的工具

    作者回复: 👍

     1
     13
  • 松花皮蛋me
    2019-03-20
    这篇完全听不懂
     1
     5
  • 青石
    2019-03-22
    #echo function_graph > current_trace
    -bash: current_trace: Permission denied

    报上面错误的同学,可以尝试下面的命令,环境是CentOS 7.6
    $ echo function_graph > current_tracer
    $ echo funcgraph-proc > trace_options
    展开

    作者回复: 谢谢分享

    
     2
  • 佳
    2019-03-23
    在和同事讨论nodejs使用从thrift转化到grpc时候会性能下降问题就用老师介绍

    strace -T -ttt -p pid

    找到根源。

    grpc -node版本发送分两次writev系统调用,第一次发送 grpc路径,第二次发送参数。比thrift协议一次效率一些。

    再发现node并发次数多,回调算时间往往是多个调用所花的时间。这些效率都用strace看到,在前面时间
    展开

    作者回复: 👍谢谢分享

    
     1
  • xfan
    2019-03-22
    我的机器一运行
    echo function_graph > current_trace或trace-cmd的命令就卡死,tty1也输入不了,我现在是ubuntu18.04 双处理器 1G内存

    作者回复: 这个问题我也是第一次见到,检查下系统日志里面有没有错误?

    
     1
  • Linuxer
    2019-03-20
    老师,碰到一个问题怎么选择tracepoint和tracefunction呢?然后怎么结合输出分析问题呢?

    作者回复: 先要用其他工具定位出大概的位置,比如用perf或者bcc等等。有了函数之后,再回来跟踪函数的内部。

    
     1
  • 全大神啊
    2019-03-20
    这个专栏很不错,学了很多干货,老师挺负责任的,希望老师以后多多开点专栏,分享新知识,开了记得通知😙

    作者回复: 谢谢支持😊

    
     1
  • ninuxer
    2019-03-20
    打卡day53
    个人认为perf的功能全面,可用于系统和内核的分析,ftrace用于内核级别的分析~
    
     1
  • crystal
    2021-03-01
    老师,麻烦问下你哦,再这节课程中我执行trace-cmd report 界面为什么没有任何输出呢?没有报错也没有输出呢
    
    
  • 易水
    2020-12-13
    我的用的系统内核较新, echo do_sys_open > set_graph_function 看不到结果,换成
    do_sys_openat2 就可以了,strace ls看了下 新kernel都用 openat 打开, 老kernel使用open打开
    
    
  • Tom
    2020-08-18
    我也打个卡,给老师点个赞,干货多多!!有些内容第一次接触,需要多听几遍。
    
    
  • 201200986
    2020-03-21
    基于trace的方法是不是会对程序本身的性能造成很大影响?不适合在线分析呢
    
    
  • Li. Mr
    2020-02-27
    您好,请问打开debugfs对系统性能有影响么?
    
    
  • 辉晖
    2019-11-25
    执行这句机器卡死,只能强制重启:
    echo funcgraph-proc > trace_options
    执行这句报错:
    # trace-cmd record -p function_graph -g do_sys_open -O funcgraph-proc ls
      plugin 'function_graph'
    trace-cmd: Permission denied
      can't create recorder
    trace-cmd: Permission denied
      can't create recorder
    trace-cmd: Permission denied
      can't create recorder
    trace-cmd: Permission denied
      can't create recorder
    available_events     events         options         set_ftrace_notrace trace_clock     tracing_thresh
    available_filter_functions free_buffer         per_cpu         set_ftrace_pid trace_marker     uprobe_events
    available_tracers     function_profile_enabled printk_formats     set_graph_function trace_options     uprobe_profile
    buffer_size_kb         hwlat_detector     README         snapshot     trace_pipe
    buffer_total_size_kb     instances         saved_cmdlines     stack_max_size trace_stat
    current_tracer         kprobe_events     saved_cmdlines_size stack_trace     tracing_cpumask
    dyn_ftrace_total_info     kprobe_profile     set_event         stack_trace_filter tracing_max_latency
    enabled_functions     max_graph_depth     set_ftrace_filter trace     tracing_on
    trace-cmd: Permission denied
      Error creating output file
    展开
    
    
  • z.l
    2019-04-21
    请教下java里常用的btrace和今天讲的几个工具是什么关系啊

    作者回复: 今天介绍的工具都是系统级工具,可以用在任何应用;而btrace是应用级的,只能用在Java应用上。

    
    
  • 如果
    2019-04-18
    DAY50,打卡
    
    
  • 大坏狐狸
    2019-04-12
    $ trace-cmd record -p function_graph -g do_sys_open -O funcgraph-proc ls 这个执行之后就弹出一个框,说宿主机CPU巴拉巴拉,就把我机器卡死了。。。只能用网管重启大法。。。
    
    
  • 金波
    2019-03-25
    请教老师个问题,遇到一个问题是,嵌入式linux系统上,几秒钟之内某个进城突然导致OOM。
          请问有没有什么好的方法调查或者捕捉谁短时间占用大量内存吗? 脚本几秒检测maps试过,捕捉不到。内存钩子一是不线程安全,再就是应该用了tcmalloc,应该也不行。 valgrind太重量级,大程序跑不动。多谢

    作者回复: 动态追踪(比如bcc或者systemtap)应该是最好用的方法了。如果发送了OOM,从系统日志里面也可以找到线索

    
    