Pthreads似乎并没有使用多个处理器

时间:2012-04-23 23:49:33

标签: c linux multithreading

我有一个生成多个子进程的应用程序,然后继续生成多个线程。我可以控制生成的进程和线程的数量。线程对NAS执行特定的读/写操作,并记录这需要多长时间。

奇怪的是,执行读/写操作所需的时间更长具有多个线程。我在启动应用程序之前读取了/ proc / stat并且在完成之后,得到了这个(经过一些数学运算):

cpu0: 1.0050% usrtime, 2.5126% systime, 95.4774% idle, 0.5025% softirq
cpu1: 0.0000% usrtime, 0.0000% systime, 100.0000% idle, 0.0000% softirq 

我还检查了sched_getaffinity,并为子进程启用了两个CPU。除了产生多个线程之外,我还必须做些什么才能使用多个内核?

1 个答案:

答案 0 :(得分:3)

你几乎没有使用你的CPU。走出网络附加存储,您的瓶颈很可能是您的网络连接。您推送了多少数据以及您的管道(和您的NAS)可以承受多少带宽?