Per discutere, gli sviluppatori del kernel Linux hanno proposto una serie di patch sviluppate dal progetto Multikernel, recentemente trasferito nella categoria del software open source e che ora sarà sviluppato in collaborazione con la comunità. Multikernel permette di eseguire diversi esempi indipendenti del kernel Linux su un singolo computer fisico, che hanno accesso diretto alle risorse hardware e possono essere utilizzati per avviare più ambienti di sistema isolati. Il progetto è stato creato da Multikernel Technologies, fondata e guidata da Cong Wang, il quale gestisce nel kernel Linux il sottosistema di controllo del traffico (TC, Traffic Control).
Per avviare e gestire i kernel, è stata proposta una chiamata migliorata kexec, che a differenza della classica kexec non è limitata alla sostituzione del kernel in esecuzione e consente di avviare ulteriori esempi di kernel eseguiti in parallelo. Per il monitoraggio e il debug degli esemplari di kernel avviati è stato implementato l'interfaccia "/proc/multikernel", mentre per la comunicazione tra i kernel e la coordinazione del lavoro è stato proposto il framework di comunicazione Multikernel IPI.

Multikernel viene presentato come una nuova architettura di isolamento, occupando una nicchia tra la virtualizzazione tramite hypervisor e l'isolamento in contenitori 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 elevate prestazioni senza gli oneri della virtualizzazione. Rispetto ai contenitori, Multikernel fornisce un alto livello di isolamento e consente di utilizzare un kernel separato in ogni ambiente isolato.

Le prestazioni nell'uso di Multikernel sono valutate come vicine a quelle dell'esecuzione su hardware separato. Questo è stato possibile eliminando i costi di overhead tipici della virtualizzazione, che sorgono a causa dei gestori di trasferimento di controllo tra le macchine virtuali (VM exit), della traduzione IOMMU e dell'intervento dell'hypervisor nell'esecuzione delle operazioni privilegiate. Sono supportati l'allocazione dinamica delle risorse agli ambienti avviati e il garantire prestazioni prevedibili.
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 per la sua esecuzione, condividendo le altre risorse hardware.
I principali vantaggi di Multikernel:
- Migliore isolamento dai guasti nei diversi ambienti di esecuzione.
- Maggiore sicurezza attraverso la separazione a livello di kernel.
- Un utilizzo più efficace delle risorse rispetto alle tradizionali macchine virtuali basate su hypervisor, come KVM e Xen.
- Possibilità potenziale di aggiornare il kernel senza interrompere l'attività utilizzando il meccanismo KHO (Kernel Hand Over).
- Supporto all'integrazione con le infrastrutture cloud standard e possibilità di transizione trasparente dai tradizionali sistemi di virtualizzazione e isolamento dei contenitori.
- Compatibilità completa con le applicazioni esistenti e le interfacce di sistema Linux. Multikernel modifica solo in parte il kernel, mantenendo la piena compatibilità a livello di API.
Fonte: opennet.ru
