マルチスレッドアプリケーションのパフォーマンスをプロファイリングしようとしています。
そこで、コンパイル時に「-pg」オプションを追加しました。
スレッドプールで固定数のスレッドを使用しています。4つのCPUコアがある場合、12 + 1=13のスレッドが実行されます。
私にとって大きな驚きは、「-pg」オプションを追加した後、実行中のスレッドが1つだけで、他のスレッドがまったく実行されていないことです(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
ありがとう。
ピーター