Dask 很慢,状态页面中显示许多磁盘读取和磁盘写入 block

标签 dask

我的 Dask 计算速度很慢。当我查看诊断仪表板的状态页面时,我发现大部分时间都花在了 disk-read-*disk-write-* 任务上。

这是什么意思?

如何诊断此问题?

最佳答案

当 Dask worker 开始耗尽内存时,他们会将额外的数据写入磁盘。这在状态页面中记录为 disk-write- 任务。当再次需要该数据时,它会从磁盘中读取,并且 disk-read- 任务会显示在状态页面上。您可以通过查看显示每个工作人员的内存使用情况的左上图或查看显示仍在内存中的每种特定类型的任务数量的进度条的实心部分来确认这一点。

解决此问题的方法:

  1. 弄清楚为什么 Dask 需要将数据保存在内存中。常见原因:
    1. 当你坚持大量数据时
    2. 当 Dask 必须保留大量中间结果时,例如在完全洗牌的情况下,或具有高基数结果的计算
  2. 获得更多内存
  3. 获得更快的磁盘。现代磁盘带宽在过去几年有所提高。可以在带宽为 1-2GB/s 的消费级个人笔记本电脑上获得驱动器。

关于Dask 很慢,状态页面中显示许多磁盘读取和磁盘写入 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928913/

相关文章:

python - Str 在 Dask Dataframe 中拆分并展开

python - Dask - 警告 - Worker 超出了 95% 内存预算

python - 在返回几列的应用上使用 Dask(DataFrame 等)

python - 如何在 dask 数据框中设置(计算)分区?

python - 限制Dask CPU和内存使用(单节点)

python - 与 HDF5 相比,为什么从 CSV 导入时 pandas 和 dask 的性能更好?

python - 读取大量parquet文件: read_parquet vs from_delayed

kubernetes - dask.distributed集群可以独立自动缩放不同的工作线程吗?

python - 如何洗牌 Dask 包中的元素

python - 有没有什么好方法将Spark RDD的内容读取到Dask结构中