Tudo depende de como o aplicativo é codificado, o que ele faz e assim por diante. Versões recentes do Linux incluíram novas APIs para aumentar a alta taxa de transferência, como splice / vmsplice, introduzidas no 2.6.17. Mas, obviamente, requer que seu aplicativo seja usado. Todas as versões recentes de distros modernas terão pelo menos esse kernel, de qualquer forma.
Splice basicamente permite que você passe dados entre descritores de arquivos sem copiá-los. Você acabou de dizer ao sistema operacional, pegar muitos bytes de lá e enviá-los para lá. Reduz a cópia de dados e troca de contexto, uma vez que tudo é feito no kernel.
Aplicativos como haproxy podem usar essa chamada para preencher uma placa dual ethernet de 10 gigabits em um servidor de baixo custo.
Agora, splice / vmsplice / tee não fará muita diferença se seu aplicativo não estiver passando a maior parte do tempo copiando dados. Mas existem outros syscalls que você deseja investigar para lidar com muitas conexões simultâneas.
Por exemplo, certifique-se de usar epoll em vez de selecionar / poll. Onde o último envia uma lista de todos os FDs em que está interessado em cada chamada, epoll_create constrói uma lista no kernel, e a chamada epol_wait apenas faz referência a essa lista. Você pode ver a vantagem quando estiver ouvindo milhares de soquetes e ligar para selecionar / pesquisar dez mil vezes por segundo.
Além disso, você deseja ver as configurações de sysctl em tempo de execução. Os padrões geralmente são muito conservadores.
Finalmente, eu definitivamente recomendo que você use uma distro baseada em assinatura / suporte, como RHEL ou SLES; o tipo de serviço de suporte que eles fornecem é exatamente o que você precisa, pois eles irão ajudá-lo se houver uma regressão de desempenho no kernel, e eles serão capazes de obter a correção rapidamente.