• Multikernel Linux låter flera Linux-kärnor dela på samma dator

    Med Multikernel Linux kan flera fristående Linux-kärnor köras samtidigt på samma fysiska dator – utan virtuella maskiner eller en hypervisor. Den första offentliga versionen bygger på Linux 7.0 och visar lovande resultat, men tekniken befinner sig fortfarande på experimentstadiet.

    En vanlig Linux-dator kör en enda kärna som ansvarar för allt från processorer och minne till nätverk, lagring och anslutna enheter. Det spelar ingen roll om datorn har fyra eller hundra processorkärnor – alla resurser styrs normalt av samma Linux-kärna.

    Multikernel Linux tar ett helt annat grepp. I stället för att låta en enda kärna sköta hela datorn delas hårdvaran upp mellan flera självständiga Linux-kärnor. Varje kärna får sina egna processorkärnor, sitt eget minne och vid behov egna PCI-enheter.

    Den första offentliga versionen har fått beteckningen v7.0-mk2 och bygger på Linux 7.0. För närvarande stöds endast datorer med arkitekturen x86_64. Utvecklarnas lanseringsmeddelande finns i Linux-kärnans e-postarkiv.

    Som flera datorer inuti samma dator

    Det enklaste sättet att förstå tekniken är att tänka sig en stor fysisk server som delas upp i flera mindre datorer.

    En Linux-kärna fungerar som värd och förfogar över en pool med processorer, minne och enheter. Värdkärnan kan exempelvis ge fyra processorkärnor och två gigabyte minne till en andra Linux-kärna. En tredje kärna kan samtidigt få åtta processorkärnor, mer minne och direkt tillgång till ett nätverkskort eller en grafikprocessor.

    Varje Linux-kärna arbetar sedan självständigt med sin egen schemaläggare, nätverksstack och uppsättning processer.

    Det kan påminna om vanliga virtuella maskiner, men det finns en viktig skillnad: de extra Linux-kärnorna körs inte ovanpå en hypervisor som KVM, VMware eller Hyper-V. De arbetar direkt mot den tilldelade hårdvaran.

    Nya kärnor startas med en utökad variant av Linux befintliga kexec-funktion. Normalt används kexec för att starta en ny kärna utan att först gå genom datorns BIOS eller UEFI. I Multikernel har mekanismen byggts ut så att den nya kärnan kan startas bredvid värdkärnan i stället för att ersätta den.

    Resurserna kan flyttas

    Uppdelningen behöver inte vara permanent. En instans kan stängas av och lämna tillbaka sina processorkärnor, sitt minne och sina enheter till värdkärnan. Resurserna kan därefter användas för att starta en ny instans, möjligen med en annan version eller konfiguration av Linux-kärnan.

    Det öppnar för servrar där olika arbetsuppgifter får specialanpassade kärnor. En webbserver kan exempelvis använda en kärna optimerad för nätverkstrafik, medan en databas får en annan kärna med inställningar anpassade för lagring och minneshantering.

    Projektets verktyg Kerf används för att skapa instanser, tilldela resurser och starta kärnorna. Den som vill prova behöver själv kompilera kärnan med Multikernel-stödet aktiverat. Projektet har publicerat en komma igång-guide med bygg- och installationsanvisningar.

    Snabbare än KVM i vissa tester

    Utvecklarna har även jämfört Multikernel med en välkonfigurerad virtuell KVM-maskin. Testerna genomfördes på en server med två Intel Xeon Gold 5418Y-processorer. Båda miljöerna fick två processorkärnor, en gigabyte minne och samma kärnversion.

    Minneslatens och minnesbandbredd var i stort sett identiska. Det visar hur effektiv modern hårdvaruvirtualisering har blivit när processorn och minnet får arbeta utan många avbrott.

    Större skillnader syntes vid täta processbyten och kommunikation mellan processer:

    • Ett kontextbyte mellan två processer tog 1,37 mikrosekunder med Multikernel och 3,42 mikrosekunder i KVM.
    • Kommunikation genom en pipe tog 3,24 mikrosekunder med Multikernel och 7,06 mikrosekunder i KVM.
    • Kommunikation genom en lokal Unix-socket tog 4,81 mikrosekunder med Multikernel och 7,48 mikrosekunder i KVM.

    En mikrosekund är en miljondels sekund. Skillnaden är alltså omöjlig att märka vid en enstaka operation, men i servrar där miljontals processbyten och meddelanden sker varje sekund kan den sammanlagda effekten bli betydande.

    Varför blir den virtuella maskinen långsammare?

    En stor del av skillnaden beror på hur vilande virtuella processorer väcks.

    När en virtuell KVM-processor inte har något att göra lämnar den normalt den virtuella maskinen och överlämnar kontrollen till värdsystemet. När processorn behövs igen måste hypervisorn väcka den och återgå till den virtuella miljön. Denna övergång kostar lite tid.

    Multikernel-instansen styr sina fysiska processorkärnor direkt och behöver inte göra samma resa genom en hypervisor.

    KVM kan ställas in för att låta de virtuella processorerna vänta aktivt i stället för att somna. Då minskar en stor del av skillnaden, men processorkärnorna ser samtidigt fullt belastade ut och förbrukar mer energi. I projektets test ökade effektförbrukningen med upp till 19 watt.

    Resultaten betyder därför inte att Multikernel alltid är flera gånger snabbare än KVM. Skillnaden beror på arbetsbelastningen och hur den virtuella maskinen är konfigurerad. Testerna är dessutom genomförda och publicerade av Multikernel-projektet självt och bör betraktas som projektets egna resultat tills de har bekräftats genom fler oberoende tester. Den fullständiga jämförelsen mellan Multikernel och KVM beskriver både resultaten och kompromisserna kring strömförbrukning.

    Inte samma sak som containrar

    Containrar som Docker delar värdsystemets Linux-kärna. Det gör dem små och snabba, men innebär också att alla containrar är beroende av samma kärna.

    Virtuella maskiner kan köra var sin kärna och ger starkare avskiljning, men lägger till en hypervisor mellan operativsystemet och hårdvaran.

    Multikernel försöker kombinera delar av båda modellerna. Varje instans får en egen Linux-kärna, samtidigt som den körs direkt på tilldelad hårdvara. Om en kärna kraschar eller drabbas av ett problem är tanken att övriga kärnor ska kunna fortsätta arbeta.

    Det gör tekniken intressant för stora servrar, molntjänster, databaser, AI-system och andra miljöer där många processorkärnor ska utnyttjas med låg latens.

    Fortfarande ett experimentellt projekt

    Multikernel Linux är ännu inte en del av den officiella Linux-kärnan från kernel.org. Den första offentliga versionen ligger i projektets separata källkodsträd på GitHub.

    Stödet är än så länge begränsat till x86_64, även om gränssnitten har delats upp för att underlätta framtida stöd för andra processorarkitekturer. Det återstår också omfattande arbete med drivrutiner, säkerhet, stabilitet och verktyg innan tekniken kan betraktas som ett moget alternativ till etablerad virtualisering.

    Den första offentliga versionen är ändå ett viktigt steg. Multikernel visar att en kraftfull server inte nödvändigtvis måste välja mellan en enda stor Linux-kärna och traditionella virtuella maskiner. Det kan finnas en tredje väg: flera riktiga Linux-kärnor som arbetar sida vid sida direkt på samma hårdvara.

    > Teknisk fakta: Multikernel Linux

    Version:
    v7.0-mk2
    Bygger på:
    Linux 7.0
    Arkitektur:
    x86_64
    Princip:
    Flera självständiga Linux-kärnor körs samtidigt på samma dator.
    Virtualisering:
    Ingen hypervisor krävs.
    Resurser:
    Varje kärna kan tilldelas egna processorkärnor, eget minne och egna PCI-enheter.
    Startmetod:
    Utökad Linux kexec-funktion.
    Hantering:
    Kommandoradsverktyget Kerf.
    Fördel:
    Direkt tillgång till hårdvaran och låg latens utan traditionell virtualisering.
    Status:
    Experimentellt projekt och ännu inte en del av den officiella Linux-kärnan.

    [SYSTEM] Flera kärnor. En fysisk dator. Ingen hypervisor.

Etikett: systemprestanda

  • Multikernel Linux låter flera Linux-kärnor dela på samma dator

    Med Multikernel Linux kan flera fristående Linux-kärnor köras samtidigt på samma fysiska dator – utan virtuella maskiner eller en hypervisor. Den första offentliga versionen bygger på Linux 7.0 och visar lovande resultat, men tekniken befinner sig fortfarande på experimentstadiet. En vanlig Linux-dator kör en enda kärna som ansvarar för allt från processorer och minne till…