Per discutere, gli sviluppatori del kernel Linux hanno proposto una serie di patch sviluppate dal progetto Multikernel, che di recente è stato classificato come software open source e ora sarà sviluppato insieme alla comunità. Multikernel consente di eseguire più istanze indipendenti del kernel Linux su un unico computer fisico, che hanno accesso diretto alle risorse hardware e possono essere utilizzate per avviare più ambienti di sistema isolati. Il progetto è stato creato da Multikernel Technologies, fondata e guidata da Cong Wang, il quale supervisiona la sottosistema di controllo del traffico (TC, Traffic Control) nel kernel Linux.
Per l'avvio e la gestione dei kernel è stata proposta una versione migliorata della chiamata kexec, che, a differenza del classico kexec, non è limitata alla sostituzione del kernel in esecuzione e permette di avviare istanze aggiuntive del kernel che vengono eseguite in parallelo. Per il monitoraggio e il debug delle istanze del kernel avviate, è stato implementato l'interfaccia "/proc/multikernel", e per la comunicazione tra i kernel e la coordinazione del loro lavoro è stato proposto il framework di comunicazione Multikernel IPI.

Multikernel è presentato come una nuova architettura di isolamento che si colloca tra la virtualizzazione tramite hypervisor e l'isolamento dei container basato su un kernel condiviso. A differenza della virtualizzazione, Multikernel non richiede l'uso di un hypervisor, semplifica la creazione di ambienti per l'esecuzione isolata di singole applicazioni e consente di raggiungere alte prestazioni senza l'overhead della virtualizzazione. A differenza dei container, Multikernel offre un elevato livello di isolamento e consente di utilizzare un kernel separato in ciascun ambiente isolato.

Le prestazioni ottenute con Multikernel sono valutate come vicine a quelle di un'implementazione su hardware separato. Questo è stato ottenuto grazie all'esclusione dell'overhead tipico della virtualizzazione, derivante dai gestori di trasferimento di controllo tra macchine virtuali (VM exit), dalla traduzione IOMMU e dall'intervento dell'hypervisor nell'esecuzione di operazioni privilegiate. È supportato l'allocazione dinamica delle risorse per gli ambienti avviati e si assicura una prestazione prevedibile.
L'esecuzione simultanea di più kernel avviene senza virtualizzazione, utilizzando un gestore SMP che distribuisce le CPU disponibili tra le istanze dei kernel Linux. Ogni istanza del kernel Linux è assegnata a uno o più core CPU riservati alla sua esecuzione, condividendo le restanti risorse hardware.
I principali vantaggi di Multikernel:
- Miglior isolamento dai guasti negli ambienti in esecuzione.
- Maggiore sicurezza grazie alla separazione a livello di kernel.
- Utilizzo più efficiente delle risorse rispetto alle tradizionali macchine virtuali basate su hypervisor, come KVM e Xen.
- Possibilità potenziale di aggiornare il kernel senza interrompere il funzionamento, grazie al meccanismo KHO (Kernel Hand Over).
- Supporto per l'integrazione con infrastrutture cloud standard e possibilità di transizione trasparente da sistemi di virtualizzazione tradizionali e isolamento dei container.
- Completa compatibilità con le applicazioni esistenti e le interfacce di sistema Linux. Multikernel modifica solo puntualmente il kernel, mantenendo la piena compatibilità a livello API.
Fonte: opennet.ru
