Primeiro de tudo, inferno sagrado que é muito ferro! :)
Infelizmente, como sua configuração parece muito complexa, não acho que ninguém conseguirá fornecer uma resposta imediata "Existe o seu problema!" responda, a menos que eles tenham feito algo com uma configuração extremamente semelhante ou idêntica e tenham encontrado o mesmo problema. Então, enquanto este texto é rotulado pelo SU como uma "Resposta", você provavelmente deve considerar mais como uma "Sugestão". E não posso colocar nos comentários porque são muitas palavras. : S
Sem o conhecimento de como seu hardware é mapeado para os dispositivos, é difícil dizer por que o I / O está indo para um lugar e não para outro. Como você tem os dispositivos montados? Seus programas estão acessando diretamente os dispositivos sd*
, ou todos os seus sistemas de arquivos estão montados nos dispositivos dm
e todos os acessos a arquivos ocorrem por lá?
Outras coisas sobre as quais preciso perguntar:
-
Que tipo de RAID é esse? Se você está calculando bits de paridade com RAID5 ou RAID6, isso é cuidado pelo hardware do servidor RAID ... se não, os servidores de processamento estão fazendo isso ... o que é sub-ótimo e pode causar latência de E / S se feito em software.
-
Você isolou uma das principais diferenças entre os dois servidores em sua mensagem. Um está usando o canal de fibra e um está usando ethernet. O Fibre Channel deve fornecer melhor latência e largura de banda, mas talvez isso também seja um problema: se estiver fornecendo muito throughput, isso pode tornar o servidor RAID muito ocupado ... e o congestionamento leva a buffers / caches enchendo-se, o que aumenta a latência, o que causa maiores esperas de E / S.
É quase como se você pudesse ter um problema de buffer bloat com seus arrays de disco - sabe? Controladores RAID de hardware normalmente têm uma grande quantidade de cache on-board, não é? Assim, à medida que a E / S da mídia é enfileirada e os caches ficam cheios de páginas sujas, eventualmente tudo fica saturado (se o armazenamento mecânico não conseguir acompanhar a carga) e a latência passa pelo telhado ... certamente você pode produzir mais carga com 24 núcleos + FC do que com 4 núcleos + GbE :) Verifique o servidor RAID e veja como os discos estão ocupados ... muito da "E / S" pode ser apenas pacotes de controle, etc. Não tenho certeza de como o FC funciona, mas se for algo como o TCP, você verá retransmissões se as latências forem muito altas.
Como se você perguntasse a alguém uma pergunta pelo telefone e ela não respondesse por alguns segundos, você dizia "Olá?" - os protocolos de rede (e o FC é apenas um protocolo de rede) fazem a mesma coisa, apenas em uma escala de tempo menor. Mas é claro que esse extra "Olá"? é caro no contexto da rede porque adiciona ainda mais dados a um pipe já congestionado.
Para encerrar, uma dica geral:
Ao depurar problemas de latência / IO espera / taxa de transferência, sempre mede . Meça em todos os lugares. Meça no fio, meça o que os próprios programas estão fazendo, meça no final do processamento, meça no servidor RAID, etc. Não olhe apenas de uma perspectiva - tente considerar cada componente individual do sistema que está responsável pelo processamento, leitura ou gravação de qualquer um dos dados no pipeline. Desmonte uma transação ou uma unidade de trabalho discreta e dissecar exatamente o caminho percorrido pelo seu hardware, e meça em cada componente distinto para ver se há pontos de estrangulamento ou locais em que haja latência indevida, etc. Um amigo meu chamou isso de "descamação" voltar a cebola ", e eu usei a frase desde então para se referir à tarefa de depuração de um fluxo de dados.