zoukankan      html  css  js  c++  java
  • 调查用户空间程序某函数最常调用路径

    调查用户空间程序某函数最常调用路径

    原创文章,转载请注明: 转载自系统技术非业余研究

    本文链接地址: 调查用户空间程序某函数最常调用路径

    在做系统调优或者调查性能问题的的时候,比如说调查一个锁的性能问题。 这把锁的代码会有很多路径会调用, 我们可以在锁的地方设个probe点,但是我们无法知道那个路径是最经常调用的。 所以我就写了个stap脚本来解决这个问题,代码在RHEL 5.4/6下都调试没有问题的。

    cat  dig.stp
    global stacks_count
     
    probe process(@1).function(@2)
    {
     stacks_count[ubacktrace()]++;
    }
     
    function sprint_stackx(stack)
    {
    addr = tokenize(stack, " ");
    while(addr != "")
    {
            fun= symname(strtol(addr, 16));
            s = fun . "->" . s;
            addr = tokenize(""" ");
    }
    return s;
    }
     
    function print_top_stack () {
      printf ("%50s %10s ""STACK""COUNT")
      foreach (stack in stacks_count- limit 20) {
        printf("%50s %10d ", sprint_stackx(stack), stacks_count[stack])
      }
      delete stacks_count
    }
     
    probe timer.s(5) {
      print_top_stack ()
      printf("-------------------------------------------------------------- ")
    }
     
    CTRL+D
     
    #我们用nmon这个程序来试验下吧
    #脚本的使用方法是: stap dig.stp prog funcs
    #注意这个程序需要-g编译, 才能有符号信息
     
    #在另外一个控制台下运行nmon, 打开磁盘,CPU监控等。
    $nmon
     
    sudo stap dig.stp nmon proc_*
                                                 STACK      COUNT
                                     main->proc_read->          2
                                      main->proc_cpu->          2
                                     main->proc_read->          2
                                      main->proc_mem->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
                     main->proc_mem->proc_mem_search->          2
    --------------------------------------------------------------
    ...

    哈效果不错哦!

    祝玩的开心。

    Post Footer automatically generated by wp-posturl plugin for wordpress.

  • 相关阅读:
    Codeforces 451A Game With Sticks
    POJ 3624 Charm Bracelet
    POJ 2127 Greatest Common Increasing Subsequence
    POJ 1458 Common Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1698
    HDU 1754
    POJ 1724
    POJ 1201
    CSUOJ 1256
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5567633.html
Copyright © 2011-2022 走看看