выровненный по страницам буфер отправки в сокетах

На 64-битном Linux мое приложение отправляет двоичные сообщения, которые имеют переменный размер и не выровнены по 64-битным границам. Например, он может отправлять 1026 байт, 85 байт и так далее. В этом сценарии, это помогает или вредно, или не имеет значения, иметь выравниваемые по размеру страницы размеры буфера отправки и получения буфера?
Приложение написано на c и работает на rhel 6.3x с ядром 2.6.32.x86_64.

ОБНОВИТЬ:

Под буферами я изначально имел в виду SO_SNDBUF и SO_RCVBUF, которые устанавливаются с помощью setsockopt. Но, основываясь на комментариях Дэвида, я хотел бы включить возможность создания буферов приложений, которые используются в вызовах send и recv, вдоль границ PAGESIZE. Это поможет, повредит или не будет иметь значения?

1

Решение

Для всех целей применения это не имеет значения:

  • Внутриядерные буферы управляются ОС и фактически автоматически округляются / ограничиваются до нескольких страниц.
  • Пользовательские буферы могут быть выровнены по страницам для более быстрого копирования из ядра пользователя, но я уверен, что вы не заметите разницы.

С другой стороны, если вы выполняете много операций с буферизацией, скажем, от файлов до сокетов, взгляните на sendfile(2) а также splice(2), что может иметь или не иметь смысла в контексте вашего приложения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector