1
我有一个派生多个子进程,然后去产卵多线程的应用程序。我可以控制生成的进程和线程的数量。线程对NAS执行特定的读/写操作,并且记录这需要多长时间。Pthreads中似乎并没有被使用多个处理器
有什么奇怪的是,它需要进行读/写操作的时间较长与多个线程。我启动应用程序,并在完成时之前阅读的/ 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 - I/O瓶颈。 – 2012-04-23 23:59:02
此外,我猜想,该机器使用时间的其他CPU 0%,因为存在参与移动处理器之间的进程或线程成本。如果线程之间没有争用处理器,那么支付这笔费用就没有意义了。 – Sniggerfardimungus 2012-04-24 00:01:20
正是由于这个测试我发送两个1Mb的文件。应用程序产生了两个线程,一个用于发送每个文件。我们已经在2Gb的文件上运行了应用程序,结果相同。我希望通过使用较小的文件,我们将带宽问题带出了这个等式。我会检查我们NAS上的统计数据,并确保我们在未来的测试中不会超载。谢谢您的回答。 – wlformyd 2012-04-24 00:05:30