什么是 ray::IDLE,为什么有些工作人员内存不足?

Posted

技术标签:

【中文标题】什么是 ray::IDLE,为什么有些工作人员内存不足?【英文标题】:What is ray::IDLE and why are some of the workers running out of memory? 【发布时间】:2020-05-22 17:09:50 【问题描述】:

我在 EC2 上运行 ray。我在 c5.large 实例上运行工作程序,这些实例有大约 4G 的 RAM。

当我运行许多作业时,我看到以下错误消息:

  File "python/ray/_raylet.pyx", line 631, in ray._raylet.execute_task
  File "/home/ubuntu/project/env/lib/python3.6/site-packages/ray/memory_monitor.py", line 126, in raise_if_low_memory
    self.error_threshold))
ray.memory_monitor.RayOutOfMemoryError: More than 95% of the memory on node ip-172-31-43-111 is used (3.47 / 3.65 GB). The top 10 memory consumers are:

PID     MEM     COMMAND
21183   0.21GiB ray::IDLE
21185   0.21GiB ray::IDLE
21222   0.21GiB ray::IDLE
21260   0.21GiB ray::IDLE
21149   0.21GiB ray::IDLE
21298   0.21GiB ray::IDLE
21130   0.21GiB ray::IDLE
21148   0.21GiB ray::IDLE
21225   0.21GiB ray::IDLE
21257   0.21GiB ray::IDLE

In addition, up to 0.0 GiB of shared memory is currently being used by the Ray object store. You can set the object store size with the `object_store_memory` parameter when starting Ray, and the max Redis size with `redis_max_memory`. Note that Ray assumes all system memory is available for use by workers. If your system has other applications running, you should manually set these memory limits to a lower value.

我正在使用 memory = 2000*1024*1024max_calls=1 运行我的 ray 任务,因此盒子上的进程不应同时超过 2 个。

这些ray::IDLE 进程是什么?如何阻止我的工作人员进入OOM?

使用射线 0.8.1

【问题讨论】:

【参考方案1】:

尝试ray.init(local_mode=True)在单个进程中运行ray,它解决了我的内存不足问题。

【讨论】:

【参考方案2】:

ray:IDLE 是停留在处理池中的空闲进程。 (Ray 这样做是为了减少进程启动时间)。它们每个都需要大约 0.21GB 的内存,因为即使是空闲进程也需要使用一些内存(例如,它应该运行 python 解释器)。

您可能可以通过两件事来缓解这个问题。 1. 将ray_initnum_cpus 参数设置为较低(如2~3),这样您将只有2~3 个可用进程。 2.您应该考虑系统内存。如您所见,Ray 不仅将内存用于任务,还用于其系统组件,例如 raylet 或 idel 进程。如果您的机器有 4GB 内存,并且如果您的 2 个任务正在使用 2GB 内存并安排在该机器上,则会导致 OOM 问题,因为有额外的进程会消耗额外的内存。

为避免内存问题,您可以扩展集群(使用更大的机器或多台机器),或减少任务的内存使用量。

【讨论】:

以上是关于什么是 ray::IDLE,为什么有些工作人员内存不足?的主要内容,如果未能解决你的问题,请参考以下文章

PCB专题为什么直接插入插槽的PCB板金手指有些长有些短?

Null 与 ZeroMemory

为什么有些程序员敲代码太慢,效率太低?

什么是内存缓存,它是如何工作的?

为什么有些手机用自带管家清理出来的垃圾只有几百兆,而第三方软件一清理就是1到2G?

为什么有些人赚钱那么轻松