我目前正在使用 1Gbit 连接下载相当大量的数据,预计下载速度约为 125MB/s(这是在同一连接上通过不同的下载实现的)。
当前下载速度约为65MB/s。
我正在尝试使用一个简单的 Python 脚本在 CPU 的 16 个核心中的 15 个上运行 15 个下载进程,试图解决 1) 潜在的(基于连接的)服务器端限制,以及 2) 涉及许多文件和少量处理(校验和、文件验证等),并且我想尽可能保持连接得到充分利用。
可能导致瓶颈的一个因素是 HDD 写入速度 - 它是一个外部 12TB HDD(USB 3.1)5400 RPM。查看 perfmon(Windows 10)中的磁盘队列长度,看起来队列在 30(28-32)左右波动。
我的想法是否正确,多次下载不同的文件(和不同的目录)可能会由于在多个地方写入磁盘而导致整体速度变慢?
如果磁盘队列太长(如本例),是否会导致下载自动限制?协议是 SSL TCP/IP。
答案1
我已经解决了这个问题,现在的速度约为 113MB/s。
驱动器确实是瓶颈,通过在 Windows 中启用磁盘缓存解决了这个问题。默认情况下,外置硬盘驱动器上的缓存功能是禁用的,以便快速移除。
对于偶然发现此问题的任何人,您可以按照 Windows 10 中的以下步骤启用磁盘缓存:
- 转到设备管理器 (Ctrl-X)
- 展开“磁盘驱动器”部分
- 右键单击相关驱动器并选择属性
- 转到“政策”标签
- 选择‘更好的性能’
- 单击“确定”
- 重启计算机