我设置了一个带有4个核心(2GHz)和16个核心(1.8GHz)虚拟机的群集。与集群的创建和连接无问题。但是现在,我想对集群进行一些深入的学习,在这里我看到这两台虚拟机的性能使用不均匀。一个带有4个内核的一个始终在100%使用时使用16核机器,大部分时间是闲置的。
我必须在集群生成期间做出其他配置吗?因为对我来说奇怪的是,两者的强大机器是闲置的,而较弱的机器做所有的工作。
最好的问候,马克斯
在这里要牢记的两件事。
-
您的数据需要足够大才能利用数据并行性。特别是,每列的块数量必须足够大,以便所有核心要做工作。有关更多详细信息,请参见此答案:H2O不在并行
上工作 H2O-3假设您的节点是对称的。它不会根据节点的能力在整个群集上加载平衡工作。更快的节点将首先完成工作,并等待闲置的节点以赶上较慢的节点。(如果您有两个对称节点,则可以看到相同的效果,但其中一个正在忙于运行另一个过程。)
不对称是内存的更大问题(在其中较小的节点可能会用尽内存并且完全失败),而不是CPU(其中一些节点只是在等待)。因此,请务必确保以-Xmx
的相同值启动每个H2O节点。
您可以限制-nthreads
选项中H2O使用的核心数量。因此,您可以尝试给出两个节点-nthreads 4
中的每个节点,看看它们是否使用大约四个内核更对称地表现。在您描述的情况下,这意味着较小的机器被大约100%使用,并且较大的机器被使用了大约25%。(但是,由于这两台机器可能有不同的芯片,因此芯可能并不完全相同,也不完美,这是可以的。)
[我完全忽略了虚拟化方面,但是CPU共享也可以根据您的管理程序的配置来进入图片。]