Popcorn sta sviluppando un sistema di esecuzione dei thread distribuiti per il kernel Linux.

Virginia Tech suggerì per la discussione da parte degli sviluppatori del kernel Linux, una serie di patch con l'implementazione di un sistema di esecuzione dei thread distribuito Popcorn (Distributed Thread Execution), che consente di organizzare l'esecuzione di applicazioni su più computer con la distribuzione e migrazione trasparente dei thread tra host. Con Popcorn le applicazioni possono essere avviate su un host e poi spostate su un altro host senza interruzioni. Nei programmi multithread è consentita la migrazione di singoli thread su altri host.

A differenza del progetto CRIÙConsentendo il salvataggio dello stato del processo e la ripresa dell'esecuzione su un altro sistema, Popcorn fornisce una migrazione fluida e dinamica tra host durante l'esecuzione dell'applicazione, senza richiedere alcuna azione da parte dell'utente e garantendo la coerenza della memoria virtuale su tutti gli host che eseguono thread simultanei.

Modulo stack software popcorn cerotti al kernel Linux e библиотека con test che dimostrano come le chiamate di sistema Popcorn possono essere utilizzate per migrare thread in applicazioni distribuite. A livello del kernel, sono state proposte estensioni al sottosistema della memoria virtuale con l'implementazione della memoria condivisa distribuita, che consente ai processi su host diversi di accedere a uno spazio di indirizzi virtuali comune e coerente. La coerenza delle pagine della memoria virtuale è garantita da un protocollo che replica le pagine di memoria sull'host quando vengono lette e invalida le pagine di memoria quando vengono scritte.

L'interazione tra gli host viene effettuata utilizzando un gestore a livello di kernel per i messaggi trasmessi tramite un socket TCP. Si noti che TCP/IP viene utilizzato per semplificare il debug e il test 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 host. Tutti gli host che eseguono applicazioni distribuite devono avere lo stesso livello di attendibilità. Dopo la stabilizzazione degli algoritmi principali, verrà utilizzata una modalità di trasporto più efficiente.

Popcorn si sviluppa dal 2014 come progetto di ricerca per studiare le possibilità di creare applicazioni distribuite, i cui thread possono essere eseguiti su diversi nodi in eterogeneo sistemi informatici in grado di combinare core basati su diverse architetture di set di istruzioni (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). L'insieme di patch proposto agli sviluppatori del kernel Linux supporta solo l'esecuzione su host con CPU x86, ma esiste anche una versione più funzionale di Popcorn Linux, che consente l'esecuzione delle applicazioni su host con architetture CPU diverse (x86 e ARM). Per utilizzare Popcorn in ambienti eterogenei è necessario utilizzare un apposito compilatore basato su LLVM. Quando si esegue in modo distribuito su host con la stessa architettura, non è necessaria la ricostruzione con un compilatore separato.

Popcorn sta sviluppando un sistema di esecuzione dei thread distribuiti per il kernel Linux.

Inoltre, si può notare annuncio progetto in qualche modo simile Teleforcella con l'implementazione di un prototipo iniziale di API per avviare processi figli su altri computer nel cluster (come fork(), ma trasferisce il processo biforcato su un altro computer).
Il codice è scritto in Rust e finora consente solo la clonazione di processi molto semplici che non utilizzano risorse di sistema come i file. Quando viene effettuata una chiamata telefork, la memoria e le strutture relative al processo vengono clonate su un altro host che esegue il gestore del server (telepad). Utilizzando ptrace, la riflessione della memoria di un processo viene serializzata e, insieme allo stato del processo e ai registri, trasferita a un altro host. L'API consente inoltre di salvare lo stato del processo in un file e ripristinarlo tramite esso.

Fonte: opennet.ru

Aggiungi un commento