为什么并发下载速度更快

为什么并发下载速度更快

许多下载管理器喜欢支持通过多个并行连接下载文件,每个线程一个。概念是每个连接将单独下载文件的一部分。
例如,如果有 5 个连接,则第一个连接将下载文件的前 0-20% 部分,第二个连接将下载 20-40% 部分,依此类推。

同样,在服务器端,将有 5 个线程,其中一个线程将并行读取文件的 20%。
但是,我认为尝试使用多个线程同时读取单个文件实际上会使下载明显慢,因为机械磁盘的读取头将不得不比以前做更多的寻道。
即使我们假设磁盘控制器排队机制足够智能,可以将所有 5 个多部分请求批量处理到单个文件,并将其放在一个连续读取中,但这与我们在一个线程中执行读取然后通过 1 个 http 连接提供文件相比没有任何优势。

那么如何才能使文件的并行下载速度更快呢?

答案1

我的理解是,只有当瓶颈是网络连接时,并行下载不同的文件部分才有用:要么是您下载的服务器的上传带宽,要么是您和服务器之间的网络带宽。当这些链接饱和时,可用带宽将在连接之间分配,在某些情况下,它可以在连接之间均匀分配。因此,如果您打开了 5 个连接,那么您获得的带宽份额将比只有一个连接时更大。

当然,如果服务器和网络以更聪明的方式共享带宽,例如通过在客户端 IP 而不是连接之间分配共享,那么这种方法就不起作用。

当瓶颈是服务器或客户端上的磁盘 IO 时,这种策略确实不会有帮助,甚至可能会损害性能,因为读取和写入将不再连续。此外,当瓶颈是 ISP 和调制解调器之间的可用带宽时(我认为这可能是最常见的情况),那么并行下载既不会有害也不会有帮助。

答案2

一般来说,你的系统与磁盘驱动器的连接速度比网络要快得多。即使是一个可以写入 50 兆的慢速硬盘字节每秒可以毫无问题地跟上使用 100 兆的多次下载少量联系。

相关内容