Multithreading 哪种数量的进程将为我提供最佳性能?
我现在正在做一些昂贵的计算。这是一个程序,我同时运行多个实例。我在linux下的机器上运行它们,每台机器有4个CPU,每个CPU有6个内核。CPU是Intel Xeon X5660,支持超动画。(这是一些疯狂的硬件,嗯?)现在我一次运行24个进程。是否最好运行更多,HT的b/c 不要思考,不要测量 更新 一根绳子有多长Multithreading 哪种数量的进程将为我提供最佳性能?,multithreading,cluster-computing,Multithreading,Cluster Computing,我现在正在做一些昂贵的计算。这是一个程序,我同时运行多个实例。我在linux下的机器上运行它们,每台机器有4个CPU,每个CPU有6个内核。CPU是Intel Xeon X5660,支持超动画。(这是一些疯狂的硬件,嗯?)现在我一次运行24个进程。是否最好运行更多,HT的b/c 不要思考,不要测量 更新 一根绳子有多长 如果没有更多关于你计算的信息,给你一个明确的答案将是困难的,如果不是不可能的话。即使有了这些信息,任何答案都有可能只是猜测 您确实需要对解决方案进行一些计时/分析。但是,在第一个
如果没有更多关于你计算的信息,给你一个明确的答案将是困难的,如果不是不可能的话。即使有了这些信息,任何答案都有可能只是猜测 您确实需要对解决方案进行一些计时/分析。但是,在第一个实例中,您需要能够配置在任何时间运行的线程/进程的数量 一旦你有了这个,你就可以设置一个场景,运行它并测量结果
重复不同的值,看哪一个执行得最好。
第一个测量是个好主意,但是你也可以考虑如下:
- 如果进程可能会阻塞(特别是IO),那么越多越好
- 如果这些进程大部分时间都在做大量的数学运算,那么您可以利用更多进程的超线程优势
- 另一方面,如果进程具有任何共享状态(内存或文件),过多的共享状态将增加争用和缓存抖动
如果您的应用程序体系结构允许,考虑一个具有多个线程的进程,或者每个进程都有M个线程,其中N和M是通过标杆来确定的。当然是对的。这通常只能通过实验才能发现。我同意没有什么比得上一个好的基准,但你也需要思考(有一些背景知识)来设计一个好的基准。@Eric J:但没有一个基准是一个足够精确的实际操作模型,因此它完全是一个经验决定。混合隐喻:一只母鸡有多重?@Victor:在他的例子中,IO可能很轻(时不时地写下结果)。谢谢,我现在没有时间写一个广泛的基准b/c,我需要写一篇论文。所以你给了我一些想法。