Якщо ви їдете по маршруту з високою продуктивністю, вам потрібно запустити якомога менше інших (запланованих) процесів, оскільки вони будуть перешкоджати вашій програмі.
Linux, як і класичні операційні системи UNIX, призначений для одночасного запускання декількох додатків і намагається запобігти голодуванню ресурсів, і ви будете прагнути до навпаки, голодувати все інше, крім вашої програми. Прості кроки на рівні ОС - це зміна приємного рівня та пріоритету в реальному часі вашої програми, зміна планувальника або збирання ядра в реальному часі .
TCP / IP, як правило, налаштовується для запобігання перепадів з'єднання та ефективного використання пропускної здатності. Щоб отримати найменшу можливу затримку з дуже швидкого зв'язку, а не отримувати максимальну пропускну здатність із з'єднання aa, де деякі проміжні посилання є більш обмеженими, ви збираєтеся скорегувати налаштування мережевого стеку.
sysctl -a
покаже вам безліч налаштувань ядер, які ви можете настроїти. Налаштування залежать від того, ви використовуєте IPv4 чи IPv6 і що саме ви вже робите у своїй програмі, але це може бути цікавим:
net.ipv4.tcp_window_scaling=1
RFC 1323 - підтримка IPV4 розмірів вікон TCP більше 64K - зазвичай потрібна у мережах з високою пропускною здатністю
net.ipv4.tcp_reordering=3
Максимальний раз, коли пакет IPV4 може бути переупорядкований у потоці пакетів TCP, без TCP припускати втрату пакету і переходити до повільного запуску.
net.ipv4.tcp_low_latency=1
призначений віддати перевагу низькій затримці над більшою пропускною здатністю; налаштування = 1 вимикає обробку попередніх запитів IPV4 tcp
net.ipv4.tcp_sack=0
налаштування 1 дозволяє вибіркове підтвердження для IPV4, що вимагає ввімкнення tcp_timestamps та додає деякий накладний пакет, який вам не потрібен, якщо ви не відчуваєте пакетну втрату
net.ipv4.tcp_timestamps=0
Рекомендується лише у випадках, коли потрібен мішок.
net.ipv4.tcp_fastopen=1
Увімкнути надсилання даних у відкриваючий SYN-пакет.
Більшість, якщо не всі, задокументовано краще у джерелі ядра .
Ви, звичайно, можете кодувати неочищені TCP-сокети і значною мірою взагалі обходити стек TCP / IP ядра.
Часто високоналагоджені системи працюють у надійній мережі, а їхні локальні (iptables) брандмауери відключені.