• DAXFS – ett nytt Linux-filsystem som läser direkt ur minnet

    DAXFS är ett nytt experimentellt filsystem för Linux som vill göra något ovanligt: låta systemet läsa filer direkt ur delat fysiskt minne, utan omvägen via den traditionella lagringsstacken. Genom att bygga på Direct Access kan samma skrivskyddade data delas mellan flera kernelinstanser och till och med ligga kvar i minne som kommer från GPU:er, FPGA:er eller CXL-enheter. Idén kan minska både latens och RAM-förbrukning i allt från containermiljöer till framtida minnespooler och acceleratorbaserade system.

    Linuxvärlden har fått ett nytt, ovanligt tillskott. Kernelutvecklaren Cong Wang på företaget Multikernel har presenterat ett experimentellt filsystem med namnet DAXFS – ett filsystem som helt hoppar över den traditionella vägen via hårddiskar, block-I/O och sidcache, och istället läser data direkt ur fysiskt minne.

    Det kan låta som en detalj för specialister, men DAXFS pekar mot hur framtidens system kan dela data snabbare, snålare och smartare, särskilt i miljöer med containrar, acceleratorer och delat minne.

    Vad är DAX – och varför är det intressant?

    Namnet DAXFS kommer från DAX (Direct Access), en funktion i Linuxkärnan som gör det möjligt för program att komma åt lagringsmedia som om det vore vanligt RAM-minne. Istället för att läsa data i block, kopiera dem till sidcache och sedan vidare till programmet, kan DAX läsa direkt från minnesadressen.

    Resultatet blir lägre fördröjning, färre minneskopior och lägre RAM-förbrukning. DAX används redan i dag tillsammans med så kallat persistent memory, men DAXFS tar idén ännu längre.

    Hur skiljer sig DAXFS från RAMFS och TMPFS?

    Linux har länge haft minnesbaserade filsystem som RAMFS och TMPFS. De är snabba, men de använder fortfarande sidcache och allokerar minne separat för varje instans.

    DAXFS fungerar annorlunda. Det mappar sammanhängande fysiskt minne direkt till filsystemet, filinnehåll läses via direkta minnesläsningar och samma data kan delas mellan flera system utan att kopieras.

    Man kan likna det vid att flera datorer läser ur samma uppslagna bok, istället för att var och en gör sin egen kopia av sidorna.

    Delat minne från GPU:er, FPGA:er och CXL

    En av de mest intressanta egenskaperna är att DAXFS kan använda minne som inte nödvändigtvis sitter på CPU:n.

    Via Linux-gränssnittet dma-buf kan filsystemet exponera GPU-minne, FPGA-minne och CXL-anslutet minne. Allt detta kan presenteras som vanliga filer, utan att data kopieras.

    Det möjliggör zero-copy-åtkomst till stora, statiska dataset, effektiv delning mellan CPU och acceleratorer samt minskad belastning på systemets vanliga RAM. Åtkomsten är medvetet skrivskyddad, vilket förenklar designen och ökar säkerheten.

    Medvetet minimalistiskt

    DAXFS är inte tänkt att ersätta traditionella filsystem som ext4 eller XFS. I stället är det byggt för ett smalt användningsområde och är därför avsiktligt enkelt.

    Filsystemet är endast läsbart, använder ett självständigt image-format, saknar dynamisk minnesallokering, har ingen avancerad metadatahantering och innehåller ingen komplex enhetshantering.

    Denna enkelhet gör filsystemet lättare att förstå, granska och experimentera med.

    Vad kan man använda DAXFS till?

    DAXFS riktar sig till specifika men växande användningsområden.

    Inom container- och molnmiljöer kan samma container- eller Docker-basimage delas mellan flera Linuxkärnor. Genom att kombinera DAXFS med OverlayFS kan man få skrivbara containrar med minimal RAM-åtgång.

    I CXL-baserade system kan delat minne användas istället för långsamma nätverksöverföringar, där data läses direkt från en gemensam minnespool.

    För acceleratorer möjliggörs zero-copy-åtkomst till statiska AI-modeller och effektiv dataåtkomst i HPC- och AI-system.

    Experimentellt – men lovande

    Koden finns öppet tillgänglig på GitHub och utvecklaren betonar att DAXFS är ett experimentellt förslag. Om filsystemet någon gång inkluderas i Linuxkärnan avgörs av diskussioner och granskning i utvecklargemenskapen.

    Oavsett framtiden visar DAXFS hur Linux fortsätter att utforska nya sätt att hantera minne, lagring och delning av data i takt med modern hårdvara.

    Förklarade begrepp

    DAX (Direct Access)
    En Linux-teknik som gör det möjligt att läsa data direkt från minne utan att gå via sidcache eller block-I/O. Det minskar latens och minnesanvändning.

    Sidcache (Page Cache)
    En del av RAM-minnet där Linux lagrar nyligen lästa filer för att snabba upp framtida åtkomst. Effektivt, men kan leda till att samma data lagras flera gånger i minnet.

    Block-I/O
    Det traditionella sättet att läsa och skriva data i fasta block från lagringsenheter som hårddiskar och SSD:er.

    RAMFS och TMPFS
    Minnesbaserade filsystem i Linux. TMPFS kan begränsas i storlek och använda swap, medan RAMFS växer obegränsat och kan orsaka minnesbrist.

    dma-buf
    Ett Linux-API som gör det möjligt att dela minnesbuffertar mellan olika enheter, till exempel mellan GPU och CPU, utan kopiering.

    GPU (Graphics Processing Unit)
    En processor specialiserad på parallella beräkningar, ofta använd för grafik, AI och maskininlärning.

    FPGA (Field-Programmable Gate Array)
    En programmerbar hårdvarukomponent som kan anpassas för specifika beräkningar efter tillverkning.

    CXL (Compute Express Link)
    En modern anslutningsteknik som gör det möjligt att dela minne mellan CPU:er och externa enheter med låg latens.

    OverlayFS
    Ett Linux-filsystem som kombinerar ett skrivskyddat lager med ett skrivbart, ofta använt i containerteknik.

    Zero-copy
    En teknik där data inte kopieras mellan olika minnesområden, vilket sparar både tid och minne.

    FAKTA: DAXFS
    Vad är det? Ett experimentellt, läsbart Linux-filsystem byggt på Direct Access (DAX).
    Nyckelidé Filer mappas direkt mot sammanhängande fysiskt minne, vilket ger direkta minnesläsningar.
    Varför? Mindre RAM-överhead när många system/containrar annars hade duplicerat samma skrivskyddade data i minnet.
    Vad skiljer det från tmpfs? Tmpfs/ramfs använder sidcache och allokerar per instans; DAXFS pekar mot delat fysiskt minne.
    Stöd för acceleratorminne Kan använda device-backat minne (t.ex. GPU/FPGA/CXL) via dma-buf för skrivskyddad åtkomst.
    Designval Minimalistiskt: read-only image, ingen runtime-allokering, enkel metadata.
    Typiska use cases Delad container-basimage mellan kernelinstanser, DAXFS + OverlayFS för containrar, CXL-minnespoolning, zero-copy statiska data.

  • Go 1.25 – Nya funktioner, snabbare prestanda och experimentella tekniker

    Go är ett urgammalt strategibrädspel från Kina, spelat med svarta och vita stenar på ett rutnät. Målet är att omringa områden och fånga motståndarens stenar. Det har inget att göra med programmeringsspråket Go. Reglerna är enkla men spelet är djupt och komplext.I Go betyder atari att en sten eller grupp har bara en fri punkt kvar och riskerar att fångas nästa drag. Företaget Atari valde namnet för att det signalerar ett kritiskt och avgörande läge i spelet.

    Go-projektet har släppt version 1.25 av sitt programmeringsspråk, och uppdateringen är full av förbättringar inom både verktyg, kompilator, runtime och standardbibliotek. Som vanligt kommer versionen precis sex månader efter föregångaren, men den här gången introduceras flera spännande nyheter – inklusive två större experimentella funktioner.

    Ny experimentell Garbage Collector
    En av de mest intressanta nyheterna är en ny garbage collector som är optimerad för att hantera många små objekt mer effektivt. Tester visar att den kan minska minneshanteringskostnaden med 10–40 % i praktiska scenarier. Den är inte aktiverad som standard – utvecklare behöver slå på den själva och kan sedan lämna feedback till Go-teamet.

    Snabbare och mer flexibel JSON-hantering
    Den andra stora experimentella nyheten är paketet encoding/json/v2. Det är en uppdaterad JSON-implementation som lovar snabbare avkodning och fler konfigurationsmöjligheter. Även den här funktionen kräver att man aktivt väljer att använda den.

    Automatisk optimering i container-miljöer
    Go 1.25 gör att GOMAXPROCS nu automatiskt anpassar sig efter tillgängliga CPU-resurser i miljöer som Kubernetes. Tidigare krävdes manuell konfigurering för att uppnå detta.

    Förbättringar i kompilatorn

    • Snabbare allokering av slices.
    • DWARF5-debuginformation, vilket minskar storleken på binärer och påskyndar länkning, särskilt i större projekt.

    Förbättrade utvecklingsverktyg

    • Nya go vet-kontroller som fångar upp vanliga programmeringsfel.
    • Möjlighet att ignorera mappar direkt i go.mod.
    • go doc kan nu köra en lokal dokumentationsserver med flaggan -http.
    • Ett helt nytt paket – testing/synctest – gör det lättare att testa parallell kod utan risk för klassiska race condition-problem.

    Standardbiblioteket och säkerhet

    • Förbättrad prestanda i kryptografiska algoritmer.
    • Mer konsekvent hantering av ASN.1-data.
    • Nya funktioner för nätverks- och TLS-anslutningar.

    Plattformsförändringar

    • Äldre versioner av macOS stöds inte längre.
    • Go 1.25 är den sista versionen med stöd för 32-bitars Windows/ARM, som nu tas ur bruk.

    Tillgänglighet
    Go 1.25 kan laddas ned som färdiga binärfiler och installationspaket från den officiella nedladdningssidan. En fullständig lista över alla ändringar finns i Go 1.25 Release Notes, och fler blogginlägg från utvecklingsteamet väntas de närmaste veckorna.

    Exempel i språket go

    Ett enkelt program som skriver Hello, World! i terminalen:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }
    

    Förklaring:

    • package main – anger att programmet är ett körbart program.
    • import "fmt" – tar in paketet fmt för utskrift.
    • func main() – huvudfunktionen som körs först.
    • fmt.Println(...) – skriver ut text med radbrytning.

    Kör programmet:

    go run hello.go

    Kompilera till en binärfil:

    go build -o hello hello.go
    ./hello

    Faktaruta: programmeringsspråket Go

    Översikt

    Go (även kallat Golang) är ett kompilerat, statiskt typat språk från Google med inbyggd stöd för samtidighet (goroutines och kanaler), snabb kompilering och enkel distribution som fristående binärer.

    Vad språket klarar

    • Högpresterande nätverks- och serverprogram med låg latens.
    • Massiv samtidighet via goroutines och chan utan trådbekymmer.
    • Snabb kompilering till statiska, portabla binärer (lätt att containerisera).
    • Inbyggd minnessäkerhet och garbage collection.
    • Stort standardbibliotek: nätverk, HTTP, kryptografi, testning m.m.
    • Förstklassiga verktyg: go build, go test, go fmt, go vet, moduler.

    Vanliga användningsområden

    • Moln- och mikrotjänster, REST/GraphQL-API:er.
    • Distribuerade system, nätverksservrar, proxyer och gateways.
    • DevOps- och plattformsverktyg (t.ex. Docker, delar av Kubernetes-ekosystemet).
    • Kommandoradsverktyg och automation.
    • Data- och meddelandeflöden (streaming), observability/telemetri.

    Kort historik

    • Startat på Google av Robert Griesemer, Rob Pike och Ken Thompson.
    • Offentligt presenterat 2009; version 1.0 släpptes 2012.
    • Designmål: enkelhet, snabbhet, effektiv samtidighet och stark verktygskedja.

    Styrkor & saker att känna till

    • Styrkor: enkel syntax, snabb kompilering, robust standardbibliotek, utmärkt samtidighetsmodell.
    • Observera: minimalistisk generik (finns), inga undantag (errors hanteras explicit), mindre fokus på OOP-arv; GUI och mycket tunga numeriska arbetsflöden görs ofta i andra ekosystem.

    Exempel (körbar binär i en fil): go build -o app .

Etikett: minneshantering

  • DAXFS – ett nytt Linux-filsystem som läser direkt ur minnet

    DAXFS är ett nytt experimentellt filsystem för Linux som vill göra något ovanligt: låta systemet läsa filer direkt ur delat fysiskt minne, utan omvägen via den traditionella lagringsstacken. Genom att bygga på Direct Access kan samma skrivskyddade data delas mellan flera kernelinstanser och till och med ligga kvar i minne som kommer från GPU:er, FPGA:er…

  • Go 1.25 – Nya funktioner, snabbare prestanda och experimentella tekniker

    Go-projektet har släppt version 1.25 av sitt programmeringsspråk, och uppdateringen är full av förbättringar inom både verktyg, kompilator, runtime och standardbibliotek. Som vanligt kommer versionen precis sex månader efter föregångaren, men den här gången introduceras flera spännande nyheter – inklusive två större experimentella funktioner. Ny experimentell Garbage CollectorEn av de mest intressanta nyheterna är en…