- 主题:请教一下怎么查多线程的瓶颈 (转载)
【 以下文字转载自 CProgramming 讨论区 】
发信人: il15 (il15), 信区: CProgramming
标 题: 请教一下怎么查多线程的瓶颈
发信站: 水木社区 (Thu Nov 11 15:23:46 2021), 站内
举个例子:一个数值计算的测试程序,单线程的情况下,运算2百万次,计算的部分大约用时5s(总用时稍微多点)。然后对计算部分用了8个线程,大概提高了接近4倍。但是总的cpu时间(包括了每个线程的用时)要10s多点,把每个线程的用时大出来,大概是每个线程1.2s。
然后有两个问题想请教一下:
一是多线程的情况下,所有线程加在一起的总用时比单线程多了近一倍,这有可能是什么原因引起的呢?
二是有什么profiling的工具可以去查这个瓶颈?
--
FROM 183.8.129.*
没有IO;我也查了一下同步的时间,用时不超过计算的千分之5,
另外,我比较的那个每个线程的时间就是它计算的时间,还不包括同步之类的。
【 在 GoGoRoger 的大作中提到: 】
: 同步吧或者加载资源的一些io瓶颈?
: 发自「今日水木 on M2007J17C」
--
FROM 183.8.129.*
“能确定每个线程都跑在独立的物理核上”:对,我也怀疑这个。
是个8核的笔记本,然后超线程虚拟出16个核。我装的linux的虚拟机,用了8个核。不知道这里是不是有可能才用了4个独立的核。
等下关超线程再测试看看。
【 在 GoGoRoger 的大作中提到: 】
: Linux下可以用perf啥的看看吧?
: 不太清楚你的硬件状况,内存了,CPU了,都可能吧?能确定每个线程都跑在独立的物理核上吗?
:
--
FROM 183.8.129.*