На 64-битном Linux мое приложение отправляет двоичные сообщения, которые имеют переменный размер и не выровнены по 64-битным границам. Например, он может отправлять 1026 байт, 85 байт и так далее. В этом сценарии, это помогает или вредно, или не имеет значения, иметь выравниваемые по размеру страницы размеры буфера отправки и получения буфера?
Приложение написано на c и работает на rhel 6.3x с ядром 2.6.32.x86_64.
ОБНОВИТЬ:
Под буферами я изначально имел в виду SO_SNDBUF и SO_RCVBUF, которые устанавливаются с помощью setsockopt. Но, основываясь на комментариях Дэвида, я хотел бы включить возможность создания буферов приложений, которые используются в вызовах send и recv, вдоль границ PAGESIZE. Это поможет, повредит или не будет иметь значения?
Для всех целей применения это не имеет значения:
С другой стороны, если вы выполняете много операций с буферизацией, скажем, от файлов до сокетов, взгляните на sendfile(2)
а также splice(2)
, что может иметь или не иметь смысла в контексте вашего приложения.
Других решений пока нет …