【发布时间】:2022-08-06 21:01:44
【问题描述】:
我正在 Jupyter 笔记本中运行一个连接任务,该任务从 Dask 产生了许多关于可能的内存泄漏的警告,然后最终因被杀死的工作人员错误而失败:
2022-07-26 21:38:05,726 - distributed.worker_memory - WARNING - Worker is at 85% memory usage. Pausing worker. Process memory: 1.59 GiB -- Worker memory limit: 1.86 GiB
2022-07-26 21:38:06,319 - distributed.worker_memory - WARNING - Unmanaged memory use is high. This may indicate a memory leak or the memory may not be released to the OS; see https://distributed.dask.org/en/latest/worker-memory.html#memory-not-released-back-to-the-os for more information. -- Unmanaged memory: 1.59 GiB -- Worker memory limit: 1.86 GiB
2022-07-26 21:38:07,501 - distributed.worker_memory - WARNING - Worker tcp://127.0.0.1:46137 (pid=538697) exceeded 95% memory budget. Restarting...
2022-07-26 21:38:07,641 - distributed.nanny - WARNING - Restarting worker
KilledWorker: (\"(\'assign-6881b18750807133ba976bf463a98c23\', 0)\", <WorkerState \'tcp://127.0.0.1:46137\', name: 0, status: closed, memory: 0, processing: 50>)
当我在具有 32GB RAM (Kubuntu 20) 的笔记本电脑上运行我的代码时,就会发生这种情况。也许我没有为环境正确配置 Dask?我可以在系统监视器中观察内存使用量的上升和下降,但它绝不会消耗所有内存。我如何告诉 Dask 使用它可以管理的所有内核和尽可能多的内存?它似乎在单处理器模式下运行,可能是因为我在笔记本电脑上运行而不是在适当的集群上运行?
对于上下文:我正在加入两个数据集,它们都是大小为 25GB 和 5GB 的文本文件。这两个文件都已使用dd.read_fwf() 读入 Dask DataFrame 对象,然后我在其中一个帧上转换一个字符串字段,然后在该字段上加入(合并)。
-
dask.distributed 文档有一个 section 解释被杀死的工人的含义。为了提供更多帮助,我们肯定需要查看您的代码。
标签: jupyter-notebook dask