Popcorn está desenvolvendo um sistema distribuído de execução de threads para o kernel Linux.

Virgínia Tecnologia sugerido para discussão pelos desenvolvedores do kernel Linux, um conjunto de patches com a implementação de um sistema de execução de thread distribuído Pipoca (Distributed Thread Execution), que permite organizar a execução de aplicações em diversos computadores com distribuição e migração transparente de threads entre hosts. Com o Popcorn, os aplicativos podem ser iniciados em um host e depois movidos para outro host sem interrupção. Em programas multithread, é permitida a migração de threads individuais para outros hosts.

Ao contrário do projeto CRIUAo permitir que o estado do processo seja salvo e a execução retomada em outro sistema, o Popcorn fornece migração contínua e dinâmica entre hosts durante a execução do aplicativo, sem exigir nenhuma ação do usuário e garantindo a consistência da memória virtual em todos os hosts que executam threads simultâneos.

Formulário de pilha de software pipoca remendos para o kernel Linux e biblioteca com testes demonstrando como as chamadas de sistema Popcorn podem ser usadas para migrar threads em aplicativos distribuídos. No nível do kernel, foram propostas extensões ao subsistema de memória virtual com a implementação de memória compartilhada distribuída, que permite que processos em diferentes hosts acessem um espaço de endereço virtual comum e consistente. A coerência da página da memória virtual é garantida por um protocolo que replica as páginas da memória para o host quando elas são lidas e invalida as páginas da memória quando são gravadas.

A interação entre hosts é realizada usando um manipulador de nível de kernel para mensagens transmitidas por meio de um soquete TCP. Observa-se que o TCP/IP é usado para simplificar a depuração e os testes durante o processo de desenvolvimento. Os desenvolvedores entendem que, do ponto de vista da segurança e do desempenho, o TCP/IP não é a melhor maneira de transferir o conteúdo das estruturas do kernel e das páginas de memória entre hosts. Todos os hosts que executam aplicativos distribuídos devem ter o mesmo nível de confiança. Após a estabilização dos principais algoritmos, será utilizado um meio de transporte mais eficiente.

O Popcorn vem se desenvolvendo desde 2014 como um projeto de pesquisa para estudar as possibilidades de criação de aplicações distribuídas, cujos threads podem ser executados em diferentes nós em heterogêneo sistemas de computação que podem combinar núcleos baseados em diferentes arquiteturas de conjunto de instruções (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). O conjunto de patches propostos aos desenvolvedores do kernel Linux suporta apenas a execução em hosts com CPU x86, mas há também uma versão mais funcional do Popcorn Linux, que permite que aplicativos rodem em hosts com diferentes arquiteturas de CPU (x86 e ARM). Para usar Pipoca em ambientes heterogêneos, você deve usar um especial compilador baseado em LLVM. Ao executar distribuídamente em hosts com a mesma arquitetura, a reconstrução com um compilador separado não é necessária.

Popcorn está desenvolvendo um sistema distribuído de execução de threads para o kernel Linux.

Além disso, pode-se notar anúncio projeto um pouco semelhante Teleforquilha com a implementação de um protótipo inicial de API para iniciar processos filhos em outros computadores do cluster (como fork(), mas transfere o processo bifurcado para outro computador).
O código é escrito em Rust e até o momento só permite a clonagem de processos muito simples que não utilizam recursos do sistema, como arquivos. Quando uma chamada telefork é feita, a memória e as estruturas relacionadas ao processo são clonadas para outro host executando o manipulador de servidor (telepad). Usando o ptrace, o reflexo da memória de um processo é serializado e, junto com o estado do processo e dos registros, transferido para outro host. A API também permite salvar o estado do processo em um arquivo e restaurá-lo por meio dele.

Fonte: opennet.ru

Adicionar um comentário