gpt4 book ai didi

c++ - Linux 性能监控,有什么方法可以监控每个线程?

转载 作者:太空狗 更新时间:2023-10-29 11:37:15 29 4
gpt4 key购买 nike

我正在使用 Linux Ubuntu,并使用 C++ 进行编程。我已经能够使用 perf_event 访问性能计数器(指令计数、缓存未命中等)(实际上使用来自此链接的程序:https://github.com/castl/easyperf)。

但是,现在我正在使用 pthreads 运行多线程应用程序,并且需要分别完成每个线程的指令计数和周期。关于如何解决这个问题有什么想法吗?

谢谢!

最佳答案

perf 是您可以使用的系统分析工具。这不像https://github.com/castl/easyperf ),这是一个库,您可以在代码中使用它。按照以下步骤操作并使用它来分析您的程序:

  1. 安装 perf在Ubuntu上。安装在不同的 Linux 发行版中可能会有很大不同。你可以找到安装教程行。

  2. 只需运行您的程序并获取程序的所有线程 ID:

    ps -eLf | grep [application name]

  3. 打开单独的终端并运行 perf as perf stat -t [threadid]根据手册页:

    usage: perf stat [<options>] [<command>]

    -e, --event <event>   event selector. use 'perf list' to list available events
    -i, --no-inherit child tasks do not inherit counters
    -p, --pid <n> stat events on existing process id
    -t, --tid <n> stat events on existing thread id
    -a, --all-cpus system-wide collection from all CPUs
    -c, --scale scale/normalize counters
    -v, --verbose be more verbose (show counter open errors, etc)
    -r, --repeat <n> repeat command and print average + stddev (max: 100)
    -n, --null null run - dont start any counters
    -B, --big-num print large numbers with thousands' separators

有一个analysis article关于perf ,你可以感受到它。

关于c++ - Linux 性能监控,有什么方法可以监控每个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058710/

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