【问题标题】:Dask distributed workers always leak memory when running many tasksDask 分布式工作人员在运行许多任务时总是会泄漏内存
【发布时间】:2019-10-07 18:48:56
【问题描述】:

有哪些策略可以解决或调试此问题?

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

基本上,我只是在单台机器上运行大量并行作业,但只是一个 dask-scheduler,并且尝试了各种数量的工人。每当我启动大量作业时,内存都会随着时间的推移逐渐增加,只有在我反弹集群时才会下降。

我正在尝试使用 fire_and_forget。 .release() 期货有帮助吗?我通常通过来自 REPL 的 client.submit 启动这些任务,然后终止 REPL。

如果这是将 dask 与泄漏库一起使用的正确方法,我会很乐意偶尔反弹工作人员并添加一些重试模式。

更新:

我已尝试将工作内存限制为 2 GB,但仍然收到此错误。当错误发生时,它似乎进入某种不可恢复的循环,不断打印错误并且没有发生任何计算。

【问题讨论】:

    标签: memory-leaks dask


    【解决方案1】:

    在这种情况下,Dask 不会泄漏内存。别的东西是。 Dask只是告诉你这件事。您使用 Dask 运行的代码似乎泄露了一些东西。

    【讨论】:

    • 是的,在这种情况下很可能是 tensorflow。寻找在内存达到阈值(而不是整个集群)时通过某种重试覆盖来反弹工作人员的方法。
    • 您可能想查看lifetime= 关键字的实现。一个人可能会适应它来做你想做的事。
    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2013-03-11
    • 2017-02-13
    • 2012-07-05
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多