Se você está seguindo o caminho do alto desempenho, normalmente deseja executar o mínimo possível de outros processos (agendados), pois eles interferem no seu aplicativo.
O Linux, como os sistemas operacionais UNIX clássicos, foi projetado para executar vários aplicativos simultaneamente de uma maneira justa e tenta evitar a falta de recursos, e você estará buscando o oposto, deixando de lado todo o resto, exceto seu aplicativo. Etapas simples no nível do sistema operacional estão alterando o bom nível e a prioridade em tempo real do seu aplicativo, alterando o agendador ou optando por um kernel em tempo real .
O TCP / IP geralmente é ajustado para evitar quedas de conexão e fazer uso eficiente da largura de banda disponível. Para obter a menor latência possível de um link muito rápido, em vez de obter a maior largura de banda possível de uma conexão em que alguns links intermediários são mais restritos, você ajustará o ajuste da pilha de rede.
sysctl -a
mostrará uma série de configurações de kernels que você pode ajustar. As configurações dependem de você estar usando IPv4 ou IPv6 ou não e o que exatamente você já faz no seu aplicativo, mas que pode ser do seu interesse:
net.ipv4.tcp_window_scaling=1
RFC 1323 - suporte para tamanhos de janela TCP IPV4 maiores que 64 K - geralmente necessários em redes de alta largura de banda
net.ipv4.tcp_reordering=3
O número máximo de vezes que um pacote IPV4 pode ser reordenado em um fluxo de pacotes TCP sem que o TCP assuma a perda de pacotes e inicie lentamente.
net.ipv4.tcp_low_latency=1
destina-se a dar preferência a baixa latência em vez de maior rendimento; setting = 1 desativa o processamento da pré-fila IPV4 tcp
net.ipv4.tcp_sack=0
a configuração como 1 ativa o reconhecimento seletivo para IPV4, o que requer a ativação de tcp_timestamps e adiciona alguma sobrecarga de pacote, que você não precisa se não tiver perda de pacote
net.ipv4.tcp_timestamps=0
Aconselhado apenas nos casos em que é necessário saco.
net.ipv4.tcp_fastopen=1
Habilite para enviar dados no pacote SYN de abertura.
A maioria, se não todos, está melhor documentada na fonte do kernel .
É claro que você pode codificar soquetes TCP brutos e ignorar amplamente a pilha TCP / IP do kernel.
Geralmente, os sistemas altamente ajustados são executados em uma rede confiável e terão seus firewalls locais (tabelas de ip) desativados.