【问题标题】:Which number of processes will give me the best performance?哪个进程数会给我最好的性能?
【发布时间】:2010-06-13 20:43:42
【问题描述】:

我现在正在做一些昂贵的计算。它是一个程序,我同时运行多个实例。我在一台有 4 个 CPU 和 6 个内核的机器上在 linux 下运行它们。 CPU 是 Intel Xeon X5660,支持超艺术。 (那是一些疯狂的硬件,是吧?)现在我同时运行 24 个进程。运行更多会更好吗,HT 的 b/c?

【问题讨论】:

  • 哪个号码?当然是正确的。这通常只能通过实验找到。

标签: multithreading cluster-computing


【解决方案1】:

不要思考,要衡量

更新

一根绳子有多长?

【讨论】:

  • 我同意没有什么比得上好的基准了,但是你也需要思考(有一些背景知识)来设计一个好的基准。
  • @Eric J:但是没有一个基准是一个足够准确的实际操作模型,因此它完全是一个经验决定。混合比喻:一只母鸡有多重?
【解决方案2】:

先测量是个好主意,但您也可以考虑以下方法:

  • 如果进程可能会阻塞(尤其是 IO),那么更多的进程可能会更好。
  • 如果进程大部分时间都在做大量的数学运算,那么您可以通过更多进程来利用超线程。
  • 另一方面,如果进程有任何共享状态(内存或文件),它们太多会增加争用和缓存抖动。

【讨论】:

  • @Victor:在他的情况下,IO 可能很轻(不时写出结果)。
  • 谢谢 我现在没有时间写一个广泛的基准 b/c 我需要写一篇论文。所以你给了我一些想法。
【解决方案3】:

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

您确实需要对解决方案进行一些计时/分析。但是,在第一种情况下,您需要能够随时配置您运行的线程/进程的数量。

一旦你有了这个,你就可以设置一个场景,运行它并测量结果。

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

【讨论】:

    【解决方案4】:

    我正要输入几乎完全一样的维克托所写的内容,所以我让他 +1。

    我想补充一点,当存在上下文切换时,进程会比线程产生更多开销。

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

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2010-11-16
      相关资源
      最近更新 更多