gpt4 book ai didi

profiling - 哪个分析器更准确 : OProfile or Google Performance Tools?

转载 作者:行者123 更新时间:2023-12-02 00:43:51 26 4
gpt4 key购买 nike

我找到了两个很棒的分析器:

  • OProfile
  • Google Performance Tools

  • 有没有人试过他们两个?哪个更好?

    最佳答案

    oprofile 更准确;它使用 CPU 性能监控(内置有 100 次性能事件的硬件监控);

    和 google-perftools libprofiler.so 使用 setitimer - 操作系统内核的内部定时器:

    $ nm -D libprofiler.so | grep timer
    U getitimer
    U setitimer

    间隔计时器由操作系统模拟并且不能超过 HZ ,据我所知(每秒 100 次或每秒 1000 次或 300 或 250)。我只是尝试了 10000 和 100000,但有效率为 1000(程序运行时间为 2 秒,而谷歌的 cpu 分析器仅收集了约 2000 个样本)。这是我的HZ:
    $ zgrep HZ= /proc/config.gz
    CONFIG_HZ=1000

    不知道这将如何在无滴答内核上工作。

    反过来,oprofile 在 CPU 中使用特殊硬件,并且该硬件可以精确到几个刻度。它可以测量您的程序所在的位置,每 100000 次或 1000000 次 CPU 滴答,并且该值与 OS HZ 设置无关。此外,它不仅可以在 CPU 的每个第 N 个滴答上进行分析,还可以在每个第 N 个 L2 缓存未命中或每个第 N 个 jmp 上进行分析。错误预测等等……在 Pentium Pro 之后的任何 CPU 中都有数百个硬件性能事件。

    oprofile 的另一个更好的方面是它可以分析任何东西,任何用户应用程序或所有用户应用程序或内核以及每个应用程序。

    但是 oprofile 需要 root 才能使用它(AFAIK),它可以在错误使用时卡住您的系统;它需要在内核中启用(在构建内核时)。

    google-perftools 更好的一面是:易于使用;良好的绘图和分析能力;无需root即可工作。此外,google-perftools 中有一个很好的堆分析器。

    oprofile 和 google-perftools/cpuprofiler:
  • 不需要重新编译应用程序(就像 gprof/gcov 需要的那样)
  • 可以绘制部分调用图(就像在 kcachegind 中完成的一样,例如 1 2 ;pprof 甚至可以使用 callgrind 命令通过 kcachegrind 绘制)
  • 将测量真实的配置文件(不是像 kcachegrind/callgrind/其他基于 valgrind 的模拟配置文件)
  • 便携(oprofile 需要 CPU 的支持,但它适用于 intel/amd/via/many arm;perftools 可以在任何可以获得调用堆栈并要求操作系统安装 setitimer 的地方工作)
  • 关于profiling - 哪个分析器更准确 : OProfile or Google Performance Tools?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550615/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com