Se você estiver seguindo o caminho do alto desempenho, normalmente, você desejará executar o mínimo possível de processos (agendados), pois eles interferirão no seu aplicativo.
O Linux, como os sistemas operacionais clássicos do UNIX, foi projetado para rodar múltiplos aplicativos concorrentemente de uma forma justa e tenta evitar a privação de recursos e você estará apontando para o oposto, privar de tudo exceto seu aplicativo. Etapas simples no nível do SO estão alterando a boa prioridade em nível e em tempo real do seu aplicativo, alterando a scheduler ou indo para um em tempo real kernel.
O TCP / IP é normalmente 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 se você está ou não usando IPv4 ou IPv6 e o que exatamente você já faz em seu aplicativo, mas pode ser interessante:
-
net.ipv4.tcp_window_scaling=1
RFC 1323 - suporte para IPV4 TCP
tamanhos de janela maiores que 64K - geralmente necessários em redes de alta largura de banda
-
net.ipv4.tcp_reordering=3
O tempo máximo que um pacote IPV4 pode
ser reordenado em um fluxo de pacote TCP sem TCP assumindo a perda de pacotes
e começar devagar.
-
net.ipv4.tcp_low_latency=1
pretendido
para dar preferência a baixa latência em relação ao maior rendimento; definição = 1
desativa o processamento de pré-processamento de IPV4 tcp
-
net.ipv4.tcp_sack=0
configuração para 1
permite reconhecimento seletivo para IPV4, o que requer
tcp_timestamps e adiciona alguma sobrecarga de pacotes, que você não precisa se
você não experimenta o packetloss
-
net.ipv4.tcp_timestamps=0
Apenas aconselhado nos casos em que o saque é necessário.
-
net.ipv4.tcp_fastopen=1
Habilita para enviar dados no pacote SYN de abertura.
A maioria, se não todos, está documentada melhor na fonte do kernel .
É claro que você pode codificar soquetes TCP brutos e ignorar totalmente a pilha TCP / IP do kernel.
Frequentemente, sistemas altamente ajustados são executados em uma rede confiável e terão seus firewalls locais (iptables) desativados.