Se a primeira coisa que me veio à cabeça foi a popular aplicação que permite visualizar conteúdos através do protocolo torrent, receio dizer que não, não é assim, é do que se trata desenvolvedores da Virginia Polytechnic University que recentemente fez um proposta para discussão com desenvolvedores do kernel Linux em um conjunto de patches com a implementação do sistema Popcorn (Distributed Thread Execution) para distribuir threads.
este sistema permite que você organize a execução de aplicativos em vários computadores com distribuição e migração fluxo transparente entre hosts. Com o Popcorn, os aplicativos podem ser iniciados em um host, após o qual podem ser transferidos para outro host sem interrupção. Em programas multithread, a migração para outros hosts single-threaded é permitida.
Sobre pipoca
Ao contrário do projeto CRIU, que permite salvar o estado do processo e retomar a execução em outro sistema, Popcorn fornece uma migração transparente e dinâmica entre hosts durante a execução do aplicativo, sem exigir ação do usuário e garantindo a consistência da memória virtual em todos os hosts onde os threads são executados simultaneamente.
Pipoca fornece uma pilha de patch para o kernel Linux e a biblioteca com um teste mostrando como as chamadas do sistema Popcorn de fluxos migratórios podem ser usadas em aplicativos executáveis distribuídos.
No nível do kernel, extensões para o subsistema de memória virtual são propostas com a implementação de memória compartilhada distribuída, que permite que processos em hosts diferentes acessem um espaço de endereço virtual comum e consistente. A consistência das páginas da memória virtual é garantida por um protocolo que replica as páginas da memória para o host quando são acessadas para leitura e invalida as páginas da memória quando escritas.
A interação entre hosts é realizada usando um manipulador de mensagens no nível do kernel transmitido por um soquete TCP. Observa-se que o TCP / IP é usado para simplificar a depuração e o teste durante o desenvolvimento. Os desenvolvedores entendem que, em termos de segurança e 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 os hosts. Todos os hosts que executam aplicativos distribuídos devem ter o mesmo nível de confiança. Após a estabilização dos algoritmos básicos, um modo de transporte mais eficiente será aplicado.
Desde 2014, o Popcorn é desenvolvido como um projeto de pesquisa estudar as possibilidades de criação de aplicações distribuídas, cujos threads podem ser executados em diferentes nós em sistemas de computador heterogêneos, nos quais os núcleos podem ser combinados com base em várias arquiteturas de conjunto de comandos (Xeon / Xeon-Phi, ARM / x86, CPU / GPU / FPGA).
O conjunto de patch proposto para desenvolvedores de kernel Linux suporta apenas a execução em hosts com uma CPU x86Mas também existe uma versão mais funcional do Popcorn Linux que permite que os aplicativos sejam executados em hosts com diferentes arquiteturas de CPU (x86 e ARM).
Para usar o Popcorn em ambientes heterogêneos, você deve usar um compilador especial baseado em LLVM. Com a execução distribuída em hosts com a mesma arquitetura, a reconstrução por um compilador separado não é necessária.
Também, podemos notar o anúncio de algo semelhante ao projeto Telefork com a implementação do protótipo inicial da API para iniciar processos filho em outros computadores no cluster (como fork (), mas transfira o processo de ramificação para outro computador).
O código é escrito em Rust e até agora permite clonar apenas os processos mais simples que não usam recursos do sistema, como arquivos. Ao fazer uma chamada telefork, a memória e as estruturas relacionadas ao processo são clonadas para outro host executando o controlador do servidor (telepad).
Usando o ptrace, o espelho da memória do processo é serializado e, junto com o estado e os logs do processo, é transferido para outro host. A API também permite salvar o estado de um processo em um arquivo e restaurá-lo por meio dele.
fonte: https://lkml.org/