我的 Dask 计算速度很慢。当我查看诊断仪表板的状态页面时,我发现大部分时间都花在了 disk-read-*
和 disk-write-*
任务上。
这是什么意思?
如何诊断此问题?
最佳答案
当 Dask worker 开始耗尽内存时,他们会将额外的数据写入磁盘。这在状态页面中记录为 disk-write-
任务。当再次需要该数据时,它会从磁盘中读取,并且 disk-read-
任务会显示在状态页面上。您可以通过查看显示每个工作人员的内存使用情况的左上图或查看显示仍在内存中的每种特定类型的任务数量的进度条的实心部分来确认这一点。
解决此问题的方法:
- 弄清楚为什么 Dask 需要将数据保存在内存中。常见原因:
- 当你
坚持
大量数据时 - 当 Dask 必须保留大量中间结果时,例如在完全洗牌的情况下,或具有高基数结果的计算
- 当你
- 获得更多内存
- 获得更快的磁盘。现代磁盘带宽在过去几年有所提高。可以在带宽为 1-2GB/s 的消费级个人笔记本电脑上获得驱动器。
关于Dask 很慢,状态页面中显示许多磁盘读取和磁盘写入 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928913/