【发布时间】:2019-09-29 23:55:51
【问题描述】:
我现在有一个在 EC2 (Ubuntu 16.04) 上运行的 Ray 集群,它有一个 c4.8xlarge 主节点和一个相同的工作节点。我想检查是否使用了多线程,所以我运行测试以增加相同 9 秒任务的数字 (n)。由于该实例有 18 个 CPU,我预计该作业需要大约 9 秒,最多 n
相反,集群最多只能并行处理 14 个任务,然后执行时间跃升至 40 秒,并随着 n 的增加而继续增加。当我尝试使用 c4xlarge 主机(4 个 CPU)时,时间与 n 成正比,即它们是串行运行的。所以我推测master实际上需要4个系统CPU,而worker节点根本没有被使用。但是,如果我添加第二个工人,n>14 的时间比没有它的时间少约 40 秒。我还尝试了 target_utilization_factor 小于 1.0 的值,但这没有任何区别。
没有报告错误,但我注意到 EC2 实例控制台中工作程序的 ray-node-status 为“更新失败”。这很重要吗?谁能告诉我这种行为?
【问题讨论】:
-
要查看事情是否并行安排,我建议查看 Ray 时间线。在命令行(在其中一个节点上)运行
ray timeline,然后在 Chrome Web 浏览器的 chrome://tracing 中加载生成的 JSON 文件。 -
多么方便的跟踪工具!屏幕截图显示了运行 n=[8,18,28,38] 的结果。有 36 个工人,所以每个人都应该是一个真正的 CPU——我不知道哪个属于主人,哪个属于工人。然而,对于所有工人,只有第一个测试在 ~9s 运行。您是否认为这是一个资源问题:任务可能非常需要 RAM,并且如果每个工作人员都在竞争公共内存,这可能会导致瓶颈?我假设一个计算优化的实例在每个 worker 上都有足够多的 RAM。
-
我将 EBS 卷大小增加到 100Gb,这改善了一些情况,但仍然不允许所有任务并行运行。然后我将工作节点增加到 3,并运行 n=[18,36,54,72] 给出时间 ~[11, 22, 27, 36];但是,跟踪显示这仍然只使用了 36 个 CPU!我删除了 with tmp.TemporaryDirectory() as path: block(参见stackoverflow.com/questions/55912710/… 中的代码),但这并没有什么区别。我还尝试将 EBS 增加到 200Gb:同样,没有真正的区别。
标签: amazon-ec2 parallel-processing cluster-computing ray