Что такое ray :: IDLE и почему некоторым работникам не хватает памяти? - PullRequest
1 голос
/ 06 февраля 2020

Я бегу луч на EC2. Я запускаю рабочих на экземплярах c5.large, которые имеют ~ 4 ГБ ОЗУ.

Когда я запускаю много заданий, я вижу следующие сообщения об ошибках:

  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*1024 и max_calls=1, поэтому в боксе не должно быть более двух процессов одновременно.

Что это за процессы ray::IDLE и как я могу помешать моим работникам выходить из OOM?

Использование луча 0.8.1

1 Ответ

1 голос
/ 10 февраля 2020

ray: IDLE - это незанятые процессы, которые находятся в пуле обработки. (Рэй делает это так, чтобы уменьшить время запуска процесса). Каждый из них занимает около 0,21 ГБ памяти, потому что даже незанятые процессы должны использовать некоторую память (например, он должен запускать интерпретатор python).

Вероятно, вы можете решить проблему двумя способами. 1. Установите аргумент num_cpus для ray_init на меньшее значение (например, 2 ~ 3), чтобы у вас было доступно только 2 ~ 3 процесса. 2. Следует учитывать системную память. Как вы можете видеть, Рэй использует память не только для задач, но и для своих системных компонентов, таких как процессы raylet или idel. Если ваша машина имеет 4 ГБ памяти и если 2 из ваших задач используют 2 ГБ памяти и запланированы на этой машине, это вызовет проблему OOM, поскольку существуют дополнительные процессы, которые потребляют дополнительную память.

Чтобы избежать проблем с памятью, вы можете либо увеличить свой кластер (использовать большую машину или несколько машин), либо уменьшить использование памяти вашей задачей.

...