@Lite_stream

Почему параллельное I/O медленнее?

Выяснил, что нежелательно иметь более 1-го потока для Дискового i/o, не сетевого, а именно дискового. Вот, кстати, один из примеров: Почему параллельный Promise.all() на порядок медленнее, чем последовательные await'ы?.
Погуглил - так и не нашёл развёрнутого ответа.
Хотя и есть некоторые предположение почему это так работает, хотелось бы услышать авторитетное мнение или увидеть какую-нибудь ссылку.
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Jump
@Jump
Системный администратор со стажем.
Выяснил, что нежелательно иметь более 1-го потока для Дискового i/o
Ну хотя бы потому что исполнительный механизм диска один - и в один момент времени будет выполнятся одна операция. А остальные будут ждать очереди.

Если у нас один поток читает файл - будет очередь запросов этого потока. Фактически линейное чтение - такое диск отрабатывает на максимальной скорости. Обычный HDD показывает линейное чтение на уровне 100-200мегабайт в секунду.

Если у нас десять потоков читает - у нас будет очередь запросов из разных потоков. Линейного чтения уже не будет, будет случайной чтение. А случайное чтение диски отрабатывают очень медленно. Обычный hdd покажет максимум 1мегабайт в секунду.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы