Memory Dask分布式探查器中不断增长的内存使用率(泄漏?)
我有一个长时间运行的任务,提交给Dask集群(worker运行1个进程和1个线程),我使用Memory Dask分布式探查器中不断增长的内存使用率(泄漏?),memory,dask,dask-distributed,Memory,Dask,Dask Distributed,我有一个长时间运行的任务,提交给Dask集群(worker运行1个进程和1个线程),我使用tracemalloc跟踪内存使用情况。该任务可以运行足够长的时间,导致内存使用增加,并导致各种问题。下面是我如何使用tracemalloc的结构 def task(): tracemalloc.start() ... snapshot1 = tracemalloc.take_snapshot() for i in range(10): ...
tracemalloc
跟踪内存使用情况。该任务可以运行足够长的时间,导致内存使用增加,并导致各种问题。下面是我如何使用tracemalloc
的结构
def task():
tracemalloc.start()
...
snapshot1 = tracemalloc.take_snapshot()
for i in range(10):
...
snapshot2 = tracemalloc.take_snapshot()
top_stats = snapshot2.compare_to(snapshot1, "lineno")
print("[ Top 6 differences ]")
for stat in top_stats[:6]:
print(str(stat))
我得到了以下结果(清理了一点),这表明Dask Distributed中的探查器正在累积内存。这是在第二次迭代之后,这些内存数量呈线性增长
[ Top 6 differences ]
/usr/local/lib/python3.8/site-packages/distributed/profile.py:112:
size=137 MiB (+113 MiB), count=1344168 (+1108779), average=107 B
/usr/local/lib/python3.8/site-packages/distributed/profile.py:68:
size=135 MiB (+110 MiB), count=1329005 (+1095393), average=106 B
/usr/local/lib/python3.8/site-packages/distributed/profile.py:48:
size=93.7 MiB (+78.6 MiB), count=787568 (+655590), average=125 B
/usr/local/lib/python3.8/site-packages/distributed/profile.py:118:
size=82.3 MiB (+66.5 MiB), count=513462 (+414447), average=168 B
/usr/local/lib/python3.8/site-packages/distributed/profile.py:67:
size=64.4 MiB (+53.1 MiB), count=778747 (+647905), average=87 B
/usr/local/lib/python3.8/site-packages/distributed/profile.py:115:
size=48.1 MiB (+40.0 MiB), count=787415 (+655449), average=64 B
是否有人知道如何清理探查器或不使用它(我们不使用仪表板,因此不需要它)?我在worker Pod上设置了以下环境变量,这样可以显著减少探查。它似乎起作用了
DASK_DISTRIBUTED__WORKER__PROFILE__INTERVAL=10000ms
DASK_DISTRIBUTED__WORKER__PROFILE__CYCLE=1000000ms
可以在此处找到默认值:
ETA:@rpanai这是我们在K8s清单中为部署准备的
spec:
template:
spec:
containers:
- env:
- name: DASK_DISTRIBUTED__WORKER__PROFILE__INTERVAL
value: 10000ms
- name: DASK_DISTRIBUTED__WORKER__PROFILE__CYCLE
value: 1000000ms
嗯,分析器的开销当然不会那么高,我已经打开了一个问题来进一步跟踪:。如果你能用一个可复制的例子来说明你的问题,那将非常有用。谢谢嘿,谢谢。我来看看我能做些什么。你介意告诉我如何在pod中设置这些变量吗?