Каков идеальный размер буфера для чтения файлов, расположенных на общих папках AFP / SMB? - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно прочитать большое количество файлов, как правило, размером ~ 5 МБ (аудиофайлы), мне нужно сделать это как можно быстрее, и они могут быть расположены на SMB или AFP share.

Для локальной файловой системы / диска на этот вопрос ответили несколько раз на SO, но я не могу найти ответ, указанный c для NAS.

Разница заключается в служебных данных.

Для каждого read вызова мне необходимо дополнительно go через сетевые и протокольные служебные данные, что может быть значительным , Таким образом, в то время как для локального жесткого диска я бы, вероятно, выбрал кратный размер блока диска (например, размер блока 8 КБ -> 32 КБ), для NAS я мог бы уменьшить количество вызовов (т. Е. Использовать гораздо больший буфер, например, 1 МБ), чтобы уменьшить нагрузку на протокол / сеть и, следовательно, увеличить пропускную способность. Я полагаю, что помимо числа вызовов, другие факторы, такие как медленный запуск TCP , также могут повлиять на это.

Просто для иллюстрации: для чтения файла 5 Мб я мог бы позвонить read с буфером 1 МБ 5 раз или вызовом read с буфером 32 КБ 160 раз.

Итак, вот мои вопросы:

  1. Для SMB / AFP верно ли предположение о служебной нагрузке ( меньше вызовов, лучшая пропускная способность )?
  2. В чем недостаток использования больших буферов (кроме потребления памяти - это очевидно)?
  3. Каков обычно рекомендуемый размер буфера?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...