В статье "Boost socket performance on Linux (http://www-128.ibm.com/developerworks/linux/library/l-hisock...)" описаны некоторые способы увеличения производительности сетевых приложений, написанных с использованием API сокетов.Рекомендуется отключить накопление пакетов (алгоритм Нагеля) через TCP_NODELAY в setsockopt, минимизировать число вызовов write/read, подобрать оптимальный размер плавающего TCP окна (SO_SNDBUF/SO_RCVBUF в setsockopt), провести тюнинг TCP/IP стека в Linux.
URL: http://www-128.ibm.com/developerworks/linux/library/l-hisock...
Новость: http://www.opennet.me/opennews/art.shtml?num=6836
Как по мне, то это чудесно описано у Стивенса "UNIX разработка сетевых приложений" 7.9 - Параметры сокетов, стр. 245 Питерского издания.
Хотя все же приучать к такой быстродейственности иногда вредна. Таким образом программеры конечно повысят производительность на тестовом стенде, но в реальных условиях мелкими пакетами забьют всю полосу пропускания.
Вот вот, для того по-дефолту алгоритм Негеля и включен. А выключать его стоит только тогда, когда необходимо передавать маленькие пакеты и их нужно срочно получать. Для обычных же преложений он должен быть включен.
Вот только не ясно, нафига делать
rmem_max и wmem_max одинаковые с
rmem_default, wmem_default
странная статья. прописные истины описаны, а, например, про TCP_CORK [tcp(7)] ни слова. :-/
TCP_CORK
If set, don't send out partial frames. All queued partial frames
are sent when the option is cleared again. This is useful for prepending
headers before calling sendfile(2), or for throughput optimization. This
option can be combined with TCP_NODELAY only since Linux 2.5.71.
This option should not be used in code intended to be portable.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Или, а ну пошли они все нафиг, Linux уже сам стандарт. ;)
Если я правильно понимаю буквы, статья называется "Boost socket performance on Linux". Ключевое слово - Linux.