Desempenho realmente baixo com Ethernet de 10 Gbit no aplicativo personalizado

3

Recentemente, eu tinha alguns cartões Ethernet de 10 Gbit instalados em algumas máquinas conectadas a uma rede local de cerca de 80 nós de commodities que executavam um sistema de arquivos distribuídos (Lustre). O cartão de 10 Gbit atinge bom desempenho nas operações de arquivo e está funcionando como deveria.

No entanto, escrevi um aplicativo cliente personalizado em C que envia de forma assíncrona grandes blocos de dados para vários nós na rede. A máquina na qual o aplicativo cliente é executado possui uma placa Ethernet de 10 GB e todos os nós de destino têm uma placa Ethernet de 1 GB - assim, poderei obter uma taxa de transferência de envio máximo teórico de 10 gbits.

Se eu executar o aplicativo cliente em uma máquina com um cartão de 1 Gbit, ele maximiza o cartão por períodos prolongados de tempo. Mas, estranhamente, se eu rodar o mesmo aplicativo em uma máquina com um cartão de 10 Gbit, ele terá um desempenho horrível (em torno de 20 a 30 mbits por segundo).

O programa é escrito em C usando soquetes TCP normais. Existe alguma configuração especial necessária para 10Gbit? Porque é muito estranho que ele obtenha desempenho máximo em uma placa de 1Gbit, mas um desempenho horrível em uma placa de 10Gbit. Novamente, o problema não é a própria placa de 10Gbit, já que o sistema de arquivos distribuído (Lustre) obtém um bom desempenho com a placa de 10Gbit.

Alguma ideia / sugestão?

    
por Charles Salvia 15.06.2009 / 19:04

3 respostas

5

Uma coisa que notei como um problema entre os segmentos de 10gb e 1gb de lan é que a MTU padrão é diferente. A Ethernet de 10 Gb usa um MTU padrão de 9000, em vez do padrão de 1500 para Ethernet de 1 Gb. Você pode alterar o seu MTU no 10g para o menor número ou configurar o seu roteador para lidar com a quebra dos pacotes jumbo para você.

Isso me causou algumas dores de cabeça, porque sem uma dessas duas coisas configuradas, há muita fragmentação de pacotes.

    
por 15.06.2009 / 22:26
0

É muito provável que o aplicativo que você escreveu não corresponda às otimizações de E / S de um aplicativo padronizado como o Lustre.

Os gargalos de desempenho em seu código podem não estar aparecendo na máquina e no SO com uma placa de 1 Gbps, mas quando a capacidade de transferência do cartão aumenta para 10Gbps, com todos os outros parâmetros constantes (hardware e SO), suas limitações de código são destacadas .

Isso é citado na seção Implementação do Lustre da Wikipédia.

In a typical Lustre installation on a Linux client, a Lustre filesystem driver module is loaded into the kernel and the filesystem is mounted like any other local or network filesystem. Client applications see a single, unified filesystem even though it may be composed of tens to thousands of individual servers and MDT/OST filesystems.

On some massively parallel processor (MPP) installations, computational processors can access a Lustre file system by redirecting their I/O requests to a dedicated I/O node configured as a Lustre client. This approach was used in the LLNL Blue Gene installation

Você está usando esta parte?

Another approach uses the liblustre library to provide userspace applications with direct filesystem access.

Liblustre allows data movement directly between application space and the Lustre OSSs without requiring an intervening data copy through the kernel, thus providing low latency, high bandwidth access from computational processors to the Lustre file system directly.

    
por 15.06.2009 / 19:53
0

O MTU será importante para ser consistente nas interfaces.

Certifique-se de que o descarregamento TCP do hardware esteja ativado (se funcionar). E que o firmware em todas as suas nics está atualizado, pois o TOE está muito quebrado em algumas nics quando elas são enviadas. Eu testaria com TOE e TSO etc ligado e desligado e veria se faz alguma diferença.

Você está usando o broadcomm 10G Ethernet já que encontramos problemas reais com eles.

Você testou sua rede com o testador de lnet?

Quantos OSS você tem e que tipo de rendimento você obtém através do sistema de arquivos?

    
por 23.06.2009 / 23:29

Tags