Modificações para Permitir Migração de Processos na LAM/MPI
De Wiki do Veiga
Introdução
Este texto contém algumas informações de como utilizar o suporte a Checkpoint/Restart da LAM/MPI para migrar processos de uma aplicação MPI.
A migração de processos utilizando esta abordagem consiste em três fases:
- Primeiramente é realizado o checkpoint da aplicação, seguido da transferência dos arquivos de contexto dos processos migrantes para seus nós destinos.
- Na sequência, modificam-se as informações de localização nos arquivos de contexto e, então, continua-se a execução da aplicação a partir destes arquivos modificados.
- Com essas modificações é possível continuar a execução da aplicação corretamente em um conjunto diferente de nós, caracterizando uma migração de processos.
Esta foi uma das técnicas exploradas durante a elaboração da minha dissertação de mestrado.
Modificações na LAN/MPI
Cada processo em LAM/MPI possui uma estrutura struct _gps que contém as informações de localização (por exemplo, identificação do processo e do nó). Estas informações são utilizadas por LAM/MPI para reiniciar os canais de comunicação após uma operação de C/R. Desta forma, a modificação do arquivo de contexto consiste em localizar a estrutura _gps e alterar as informações para indicar o novo nó. Também é necessário modificar a tabela de mapeamento presente no arquivo de contexto de mpirun.
A seguir são listadas as modificações necessárias na LAN/MPI:
- Alterar a localização do processo a ser migrado dentro dos arquivos de checkpoint de todos os processos. Por exemplo, para migrar um processo de um nó 1 (gps_node==1) para um nó 2, deve-se fazer gps_node=2 em todos os arquivos de checkpoint. Para isso, necessita-se encontrar a struct _gps dentro dos arquivos.
A struct _gps contém as informações que identificam o processo dentro da LAM.
struct _gps {
int4 gps_node; /* node ID */
int4 gps_pid; /* process ID */
int4 gps_idx; /* process index */
int4 gps_grank; /* glob. rank in loc. world */
};
- Renomiar o arquivo de checkpoint do processo a ser migrado. Por exemplo, renomiar context.PID1-n1-PID2 para context.PID1-n2-PID2, onde PID1 é o PID do mpirun e PID2 é o PID do processo.
- Atualizar a string /tmp/lam-USER@HOST no arquivo de checkpoint do processo a ser migrado. HOST deve conter o hostname da nova localização.
- Atualizar as strings que contém o caminho para o arquivo de checkpoint do processo migrado. Por exemplo, como context.PID1-n1-PID2 foi renomiado para context.PID1-n2-PID2, deve-se realizar essa atualização dentro do checkpoint do mpirun. Também é necessário alterar o nNID que aparece antes no inicio das strings, onde NID é o node ID.
Referências
- Process Migration for MPI Applications based on Coordinated Checkpoint: http://doi.ieeecomputersociety.org/10.1109/ICPADS.2005.241
- Extensões na LAM/MPI para Automatizar o Checkpoint e Tolerar Falhas em Cluster de Computadores: http://www.din.uem.br/~ronaldo/WSCAD2005/Shadow-WSCAD2005-final.pdf
- LAM/MPI Mailing Lists: http://www.lam-mpi.org/MailArchives/
Marcelo Veiga Neves < marcelo.veiga at gmail.com >
