Почему одновременные загрузки выполняются быстрее

Многие менеджеры загрузки, такие как this , this и this , поддерживают загрузку файла по нескольким параллельным соединениям, по одному на поток. Идея состоит в том, что каждое соединение будет загружать одну часть файла отдельно.
Например, если есть 5 соединений, то первое соединение будет загружать первую часть файла 0-20%, второе соединение загрузит часть 20-40% и так далее ..

Аналогично, на стороне сервера , будет 5 потоков, в которых один поток будет читать 20% файла параллельно.
Но я думал, что попытка одновременного чтения одного файла с несколькими потоками на самом деле сделает загрузку значительно медленнее , поскольку считывающей головке механического диска придется выполнять больше поисков, чем раньше.
Даже если мы предположим, что механизм очередности контроллера диска достаточно умен, чтобы объединить все 5 составных запросов в один файл в одном последовательном чтении, это не даст нам никаких преимуществ перед чтением в одном потоке, а затем обслуживанием файл через 1 http-соединение.

Так как же ускоряются параллельные загрузки в файл?

3
задан 1 May 2020 в 22:35
2 ответа

Насколько я понимаю, параллельная загрузка разных частей файлов полезна только тогда, когда узким местом является сетевое соединение: либо пропускная способность сервера, с которого вы загружаете, либо пропускная способность сети между сервер на вас. Когда эти каналы переполнены, доступная полоса пропускания будет разделена между соединениями, а в некоторых случаях может быть разделена поровну между соединениями. Таким образом, если у вас открыто 5 подключений, вы получите большую долю полосы пропускания, чем если бы у вас было только одно.

Конечно, это не сработает, если сервер и сеть разделяют полосу пропускания более разумным способом. , например, путем распределения общего ресурса между IP-адресами клиентов вместо соединений.

Когда узким местом является дисковый ввод-вывод на сервере или клиенте, тогда эта стратегия действительно не поможет и даже может нанести ущерб производительности, поскольку операции чтения и записи будут меньше последовательный. Кроме того, когда узким местом является доступная пропускная способность между вашим интернет-провайдером и модемом (что, я бы сказал, может быть наиболее частым случаем), то параллельные загрузки не должны ни навредить, ни помочь.

1
ответ дан 4 January 2021 в 07:49

В общем, ваша система имеет гораздо более быстрое соединение с диском, чем сеть. Даже медленный жесткий диск, который может записывать 50 байт в секунду, не будет иметь проблем с одновременным выполнением нескольких загрузок с использованием соединения 100 бит .

0
ответ дан 4 January 2021 в 07:49

Теги

Похожие вопросы