Linux - чтение системного вызова - слишком большой размер буфера - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь понять выбор размера буфера для чтения-записи копии с системным вызовом чтения Linux.Хотя я знаю, что вы можете найти огромное количество людей в Интернете, которые скажут вам, что вам нужно выбрать кратный размер страницы, и все это, есть один ответ, который я не могу найти.

Если вы выберете небольшой размер буфера, вы получите дополнительные затраты при отправке большого количества запросов ввода / вывода для чтения / записи вашего файла.Но если вы выберете слишком большой размер буфера, вы не получите никаких преимуществ по сравнению, скажем, с буфером 4K-64K.Почему 4M буфер не быстрее для 100M копии файла, чем 4K буфер?Страница man read (2) говорит, что хотя системный вызов read может читать меньше байтов, чем запрошено, обычно это происходит из-за таких вещей, как EOF, сигнал завершения и т. Д. Но в нем не упоминается ограничение размера.

Из того, что я понимаю, единственная причина не выбирать большой размер буфера состоит в том, чтобы сохранить использование памяти, разве это все?

РЕДАКТИРОВАТЬ: Я спросил одного из своих профессоров, и, насколько я понимаю, это вызванодисковый кэш недостаточно велик для хранения всего запроса.Это звучит достаточно хорошо для меня, но я оставляю этот вопрос открытым, если есть какие-то детали, которые можно обсудить.

...