哪个流程会给我带来最佳性能?

时间:2010-06-13 20:43:42

标签: multithreading cluster-computing

我现在正在做一些昂贵的消费。这是一个程序,我同时运行了几个实例。我在Linux下运行它们,在一台4 cpus的机器上,每台机器有6个核心。 cpus是Intel Xeon X5660,支持超级启动。 (那是一些疯狂的硬件,是吗?)现在我一次运行24个进程。运行更多,HT的b / c会更好吗?

4 个答案:

答案 0 :(得分:4)

  

不要想,衡量

更新

  

一根绳子有多长?

答案 1 :(得分:1)

首先测量是一个好主意,但您也可以考虑以下内容:

  • 如果进程可能会阻塞(尤其是IO),那么更多可能会更好。
  • 如果这些过程在大部分时间都进行了很多数学计算,那么您可以利用HyperThreading进行更多的处理。
  • 另一方面,如果进程有任何共享状态(内存或文件),那么它们中的太多会增加争用和缓存抖动。

答案 2 :(得分:0)

如果没有关于计算的更多信息,那么即使不是不可能,也很难给出明确的答案。即使有这些信息,任何答案都很有可能是猜测。

您确实需要对解决方案进行一些时间/分析。但是,在第一个实例中,您需要能够配置您在任何时间运行的线程/进程数。

完成此操作后,您可以设置方案,运行方案并测量结果。

重复不同的值,看看哪个效果最好。

答案 3 :(得分:0)

我几乎要打出Viktor所写的内容,所以我给他+1了。

我想补充说,当存在上下文切换而不是线程时,进程会产生更多的开销。

如果您的应用程序体系结构允许,请考虑具有多个线程的单个进程,或者可能考虑具有M个线程的N个进程,其中N和M由基准测试确定。