L'azienda cinese ByteDance, che sviluppa il servizio TikTok, ha pubblicato nella mailing list degli sviluppatori del kernel Linux delle patch con l'implementazione del sistema Parker (PARtitioned KERnel), che consente di eseguire più kernel Linux contemporaneamente su un unico computer senza ricorrere alla virtualizzazione tradizionale. Per le problematiche affrontate, Parker ricorda il progetto Multikernel presentato qualche giorno fa, ma si differenzia per architettura e implementazione.
Parker utilizza il partizionamento dei kernel CPU, della memoria e dei dispositivi esistenti. Ogni istanza del kernel in esecuzione si basa su un'unica immagine del kernel, ma può utilizzare diverse impostazioni e ottimizzazioni. Il primo kernel caricato (Boot Kernel) gestisce la distribuzione e il partizionamento delle risorse hardware. Le altre istanze del kernel Linux (Application Kernel) operano esclusivamente con i kernel CPU, la memoria e i dispositivi di input/output a loro associati.
Nella versione iniziale, per ridurre i costi operativi e semplificare l'implementazione, non è presente un meccanismo di gestione e tutti i core utilizzano un'unica area di isolamento (domain), ovvero un errore in qualsiasi istanza del core può portare a problemi nell'intero sistema. In futuro si prevede di utilizzare capacità hardware separate per l'isolamento delle istanze del core. Parker menziona come ambito di applicazione i computer con un alto numero di core CPU, sui quali si verificano problemi di scalabilità dei compiti.
Per la gestione, Parker implementa un'interfaccia basata su kernfs, mentre per il caricamento di ulteriori istanze del core in aree di memoria riservate viene utilizzato kexec. Prima di avviare ulteriori core, il core primario libera i core CPU, riserva la memoria fisica e scollega i dispositivi PCI per il loro utilizzo nel core sezionato. Per l'input/output, ogni core deve avere un proprio dispositivo PCIe assegnato, come un'unità NVMe o un adattatore di rete. Dopo l'avvio dell'istanza del core, questa non può interagire con altri core.
Fonte: opennet.ru
