Algumas sugestões aprendidas ao longo dos anos.
- Minimize a carga no servidor NFS:
define as opções de exportação do NFS: async,insecure,no_subtree_check
definir opções de montagem do NFS soft,noatime,nodiratime,nolock,vers=3
também define: noatime,nodiratime
em montagens de dados / tmp / scratch.
Certifique-se de que a criptografia NFS esteja desativada para reduzir a carga.
Parar o processo de bloqueio do NFS.
-
Tente ativar os quadros JUMBO para a rede em todos os hosts (se suportado pelo equipamento de rede) - defina o MTU para 9k ou mais.
-
Certifique-se de que o armazenamento raid10 seja usado (evite raid5 / 6 em TODOS os custos) para E / S de gravação aleatória. Qualquer SSD?
-
Maximize o número de identificadores de FS abertos (o padrão é 2K em alguns sistemas), defina-o como 1M ou mais.
-
Alguma chance de copiar o banco de dados de mapeamento com dados de entrada para o armazenamento local do nó temporário e de combinar / classificar os arquivos sam resultantes como uma etapa separada?
-
Aumente o tamanho do bloco processado (por isso, ele está sendo processado por pelo menos 30 minutos ou mais.
-
Se possível, separar trabalhos em um nível mais alto possível (tente mapear / classificar 10 genomas / amostras separados em 10 nós diferentes em paralelo, em vez de tentar mapear cada genoma em série usando 10 hosts). Tentativa de verificação, uma vez que todos os processos tenham terminado.
-
Modifique uma fonte de programa, para que ela leia dados em blocos maiores, como 1M em vez de 4k.
-
Esteja ciente da contenção de interconexão de CPU / RAM (especialmente em sistemas de soquete AMD 4-8), às vezes executando 12-24 threads na caixa de 48 núcleos é muito mais rápido do que 48 threads. Experimente diferentes níveis de utilização. Certifique-se de que o NUMA esteja em & configurado para sistemas com múltiplas CPUs. Recompile com NUMA ativado.
PS: Gerenciar um cluster eficiente é semelhante ao planejamento / gerenciamento de um canteiro de obras com 1k + trabalhadores ...