添加 grpof -pg 选项使我的多线程应用程序成为非多线程
我正在尝试分析我的多线程应用程序的性能。
所以我在编译时添加了“-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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我安装并尝试了 OProfile,它工作正常,并且还可以为您提供 gprof 风格的结果。
I installed and tried OProfile, it works okay, and it can also give you the gprof-style results.