在使用 dask 抽取时间序列时,我注意到有时只有 1-2 个 CPU 用于计算,即使在其他时候 CPU 利用率很高(表明算法不是问题)。我想知道 CPU 使用率下降的原因以及如何确保每次都充分利用 CPU。
设置如下:我们有一个 (n,t) 数组(n=~400 和 t=~50M 时间点)存储在一个二进制文件中,我们按照这里的示例包装在一个延迟的内存映射 dask 数组中。然后我们使用map_overlap应用于scipy.signal.decimate部分重叠的数据块。
接下来,我在具有 32 个内核和 256GB 内存的单台机器上的 jupyterhub 实例中启动 dask-scheduler 和单个 dask-worker(nprocs=1 和 nthreads=10)。在 jupyter notebook 中,我将客户端连接到调度程序并多次运行相同的抽取计算。
在某些情况下,一切都按预期工作,并且 CPU 利用率很高。请参阅下面的 CPU 利用率快照,该快照显示了同一 dask 图的 5 次执行的高利用率。
然而,在其他情况下,例如,当我重新启动调度程序/工作程序时,CPU 利用率最初很高,但下降到只使用 1-2 个 CPU,如在同一 dask 图的 3 次执行的快照中所见。

