Memory leaks Dask分布式工作者在运行许多任务时总是泄漏内存

Memory leaks Dask分布式工作者在运行许多任务时总是泄漏内存,memory-leaks,dask,Memory Leaks,Dask,解决或调试此问题的一些策略是什么 distributed.worker-警告-内存使用率很高,但worker没有可存储到磁盘的数据。也许其他进程正在泄漏内存?进程内存:26.17 GB--工作内存限制:32.66 GB 基本上,我只是在一台机器上运行许多并行作业,但我是一个dask调度程序,并尝试了不同数量的工作人员。每当我启动大量作业时,内存会随着时间的推移逐渐上升,只有在集群反弹时才会下降 我试着用火和遗忘。释放()期货会有帮助吗?我通常从REPL通过client.submit启动这些任务,

解决或调试此问题的一些策略是什么

distributed.worker-警告-内存使用率很高,但worker没有可存储到磁盘的数据。也许其他进程正在泄漏内存?进程内存:26.17 GB--工作内存限制:32.66 GB

基本上,我只是在一台机器上运行许多并行作业,但我是一个dask调度程序,并尝试了不同数量的工作人员。每当我启动大量作业时,内存会随着时间的推移逐渐上升,只有在集群反弹时才会下降

我试着用火和遗忘。释放()期货会有帮助吗?我通常从REPL通过client.submit启动这些任务,然后终止REPL

如果这是使用dask处理泄漏库的正确方法,我很乐意偶尔跳出工作线程并添加一些重试模式

更新:


我已尝试将工作内存限制为2GB,但仍遇到此错误。当错误发生时,它似乎进入某种不可恢复的循环,不断地打印错误,而不进行计算。

在这种情况下,Dask不会泄漏内存。还有别的事。达斯克只是告诉你这件事。您正在使用Dask运行的代码似乎有泄漏的地方。

是的,在这种情况下可能是tensorflow。寻找在内存达到某个阈值(而不是整个集群)时使用某种重试覆盖来跳转工作线程的方法。您可能需要查看
life=
关键字的实现。人们可能会调整它来做你想做的事。