用 dvc 从局域网的 webdav 服务器上下大数据集时,下载速率最高只能到 19 MB/s,局域网是千兆网,完全没有充分利用。

dvc 用的是 webdavclient3,通过调试发现问题在于 webdavclient3 的 client.py 里下载有关的代码,如下:

for chunk in response.iter_content(chunk_size=128):
    buff.write(chunk)

每次只获取 128 字节的数据,太小了。如下将其改成 4 MB,改完后速度可以达到 115 MB/s,这就接近千兆网的极限,这才对。

for chunk in response.iter_content(chunk_size=2 ** 22):
    buff.write(chunk)

发表回复

您的电子邮箱地址不会被公开。