Virginia Polytechnic Institute per discutere con gli sviluppatori del kernel Linux un insieme di patch per l'implementazione di un sistema esecutivo distribuito per thread (Esecuzione di Thread Distribuita), che consente di organizzare l'esecuzione di applicazioni su più computer con distribuzione e migrazione trasparente dei thread tra gli host. Utilizzando Popcorn, le applicazioni possono essere avviate su un host, per poi essere trasferite su un altro host senza fermare il loro funzionamento. Nelle applicazioni multithread è consentita la migrazione di singoli thread su altri host.
A differenza del progetto , che consente di salvare lo stato di un processo e riprendere l'esecuzione su un'altra sistema, Popcorn fornisce una migrazione senza interruzioni e dinamica tra gli host durante l'esecuzione dell'applicazione, senza richiedere azioni da parte dell'utente e garantendo la coerenza della memoria virtuale su tutti gli host su cui vengono eseguiti contemporaneamente i thread.
Il stack software di Popcorn è composto al kernel Linux e con test che mostrano come utilizzare le chiamate di sistema Popcorn per migrare flussi in applicazioni eseguite in modo distribuito. A livello di kernel, sono proposte estensioni al sottosistema della memoria virtuale con implementazione della memoria condivisa distribuita, che consente ai processi su host diversi di accedere a uno spazio di indirizzamento virtuale comune e coerente. La coerenza delle pagine di memoria virtuale è garantita tramite un protocollo che replica le pagine di memoria sull'host quando vengono lette e invalida le pagine di memoria durante le operazioni di scrittura.
L'interazione tra gli host avviene tramite un gestore di messaggi che opera a livello di kernel, utilizzando un socket TCP. Si sottolinea che TCP/IP è utilizzato per semplificare il debug e il testing durante il processo di sviluppo. Gli sviluppatori comprendono che, dal punto di vista della sicurezza e delle prestazioni, TCP/IP non è il modo migliore per trasferire il contenuto delle strutture del kernel e delle pagine di memoria tra gli host. Tutti gli host su cui vengono eseguite applicazioni distribuite devono avere lo stesso livello di fiducia. Una volta stabilizzati gli algoritmi principali, verrà applicata una forma di trasporto più efficiente.
Popcorn è in fase di sviluppo dal 2014 come progetto di ricerca per esplorare le possibilità di creare applicazioni distribuite, i cui flussi possono essere eseguiti su nodi diversi in sistemi di calcolo in cui possono essere combinati nuclei basati su diverse architetture del set di istruzioni (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Il set di patch proposto agli sviluppatori del kernel Linux supporta esclusivamente l'esecuzione su host con CPU x86, ma esiste anche un'opzione più funzionale chiamata Popcorn Linux, che consente di eseguire applicazioni su host con diverse architetture CPU (x86 e ARM). Per utilizzare Popcorn in ambienti eterogenei è necessario impiegare un basato su LLVM. Durante l'esecuzione distribuita su host con un'architettura unica non è necessaria la ricompilazione con un compilatore separato.
Inoltre, si può notare di un progetto simile a con l'implementazione di un prototipo iniziale di API per avviare processi figlio su altri computer nel cluster (simile a fork(), ma sposta il processo biforcato su un altro computer).
Il codice è scritto in Rust e attualmente consente di clonare solo i processi più semplici, che non utilizzano risorse di sistema come i file. Durante la chiamata al telefork, la memoria e le strutture associate al processo vengono clonate su un altro host, sul quale è in esecuzione il gestore server (telepad). Utilizzando ptrace, il riflesso della memoria del processo viene serializzato e trasferito insieme allo stato del processo e ai registri su un altro host. L'API consente anche di salvare lo stato del processo in un file e di ripristinarlo tramite di esso.
Fonte: opennet.ru
