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


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

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

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

    在做系统调优或者调查性能问题的的时候,比如说调查一个锁的性能问题。 这把锁的代码会有很多路径会调用, 我们可以在锁的地方设个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.

  • 相关阅读:
    (十一)MySQL语法-外连接
    公司框架-微服务-代码修改
    公司框架-微服务-从前端找到后端
    (十)mysql语法-连接查询
    (九)mysql语法-分组函数和多表连接查询
    安装最新版navicat的时候报 rsa public key not find
    【理想流】程序员的性格和命运 . 分类: 项目管理 2014-06-14 14:56 221人阅读 评论(0) 收藏
    项目经理修炼之道(2) -- 必须读的书 . 分类: 项目管理 2014-06-14 14:54 265人阅读 评论(0) 收藏
    项目经理修炼之道(1) -- 给软件开发建模 . 分类: 项目管理 2014-06-14 14:53 264人阅读 评论(0) 收藏
    【理想流】项目管理本质论 . 分类: 项目管理 2014-06-14 14:51 183人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5567633.html
Copyright © 2020-2023  润新知