添加 grpof -pg 选项使我的多线程应用程序成为非多线程

发布于 2024-12-18 13:45:18 字数 1855 浏览 5 评论 0原文

我正在尝试分析我的多线程应用程序的性能。

所以我在编译时添加了“-pg”选项。

我在线程池中使用固定数量的线程:如果有 4 个 CPU 核心,则将有 12+1 = 13 个线程在运行。

让我惊讶的是,在我添加“-pg”选项后,只有一个线程在运行,其他线程根本没有运行(top命令中的状态“S”)。

top - 12:16:03 up 2 days, 21:46,  4 users,  load average: 1.02, 1.07, 1.32
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.6%us, 25.6%sy,  0.0%ni, 73.7%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   9224140k total,  5070060k used,  4154080k free,   214480k buffers
Swap:  9431164k total,        0k used,  9431164k free,  1722216k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3252 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.32 MyMultithreaded
 3251 plee      20   0 3111m 2.3g 3292 R   99 26.0  12:02.83 MyMultithreaded
 3250 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.01 MyMultithreaded
 3249 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:02.88 MyMultithreaded
 3248 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.12 MyMultithreaded
 3247 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.14 MyMultithreaded
 3246 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.46 MyMultithreaded
 3245 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.32 MyMultithreaded
 3244 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.16 MyMultithreaded
 3243 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.27 MyMultithreaded
 3242 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.12 MyMultithreaded
 3241 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:02.87 MyMultithreaded
 3240 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.23 MyMultithreaded

那么有没有办法解决这个问题呢?

这与以下内容有关系吗: http://sam.zoy.org/writings/programming/gprof.html

谢谢。

彼得

I'm trying to profile the performance for my multithreaded application.

So I added "-pg" option when compiling it.

I'm using a fixed number of threads in the thread pool: if there are 4 CPU cores, there will be 12+1 = 13 threads running.

The big surprise to me is that after I added "-pg" option, there is only one thread running, and the other threads are not running at all (status "S" in top command).

top - 12:16:03 up 2 days, 21:46,  4 users,  load average: 1.02, 1.07, 1.32
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.6%us, 25.6%sy,  0.0%ni, 73.7%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   9224140k total,  5070060k used,  4154080k free,   214480k buffers
Swap:  9431164k total,        0k used,  9431164k free,  1722216k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3252 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.32 MyMultithreaded
 3251 plee      20   0 3111m 2.3g 3292 R   99 26.0  12:02.83 MyMultithreaded
 3250 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.01 MyMultithreaded
 3249 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:02.88 MyMultithreaded
 3248 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.12 MyMultithreaded
 3247 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.14 MyMultithreaded
 3246 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.46 MyMultithreaded
 3245 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.32 MyMultithreaded
 3244 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.16 MyMultithreaded
 3243 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.27 MyMultithreaded
 3242 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.12 MyMultithreaded
 3241 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:02.87 MyMultithreaded
 3240 plee      20   0 3111m 2.3g 3292 S    0 26.0   0:03.23 MyMultithreaded

So is there any solution to this?

Does this have anything to do with:
http://sam.zoy.org/writings/programming/gprof.html

Thanks.

Peter

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青衫负雪 2024-12-25 13:45:18

我安装并尝试了 OProfile,它工作正常,并且还可以为您提供 gprof 风格的结果。

opgprof ./bin/MyProgramBinary  # Generate the gmon.out file
gprof -p ./bin/MyProgramBinary > gmon.txt

I installed and tried OProfile, it works okay, and it can also give you the gprof-style results.

opgprof ./bin/MyProgramBinary  # Generate the gmon.out file
gprof -p ./bin/MyProgramBinary > gmon.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文