Dansker bag vigtigt bidrag til ny Linux-kerne

Den danske Linux-kerneudvikler Jens Axboe nævnes af Linus Torvalds som en af de store bidragydere til den nye Linux-kerne 2.6.32, der torsdag så dagens lys.

Den danske Linux-kerneudvikler Jens Axboe har sat et stort og tydeligt fingeraftryk på den aftapning af Linux-kernen, 2.6.32, der i dag blev frigivet til download på hjemmesiden kernel.org.

»Jeg tror, at vi har en release uden noget nyt filsystem for en gangs skyld, men der er sket en del ændringer i btrfs (filsystem, red.), og block layer writeback er i sig selv gennemgået store opdateringer, og hele per-bdi writeback-tingen er en temmelig stor ændring,« skriver Linux-opfinder Linus Torvalds i den officielle meddelelse om den nye kerne.

Den 'temmeligt store ændring', per-BDI writeback, står der 'Jens Axboe' på, og han har kort fortalt skrevet en ny mekanisme, der gør udskrivningen af data fra kernens page cache til disken både mere fair og jævn.

Linux-kernens page cache ligger mellem filsystemet og disklaget, og den indeholder både 'clean' og 'dirty' data ? det vil sige data, der henholdsvis er konsistente og inkonsistente med, hvad der er lagret på selve disken.

De 'dirty' data er altså data, der skal skrives til filer på disken, men som endnu ikke er blevet skrevet ud. Hidtil er skrivningen af denne form for 'gamle' data sket med de såkaldte pdflush threads, som med et fast tidsinterval har taget data i page cachen og skrevet dem ud til disken.

Ud med pdflush, ind med per-BDI writeback
Typisk har et sted mellem to og otte pdflush threads stået for arbejdet, og selvom hver tråd kan arbejde på flere devices - harddiske eller partitioner - ad gangen, kan kun én af trådene tilgå et device ad gangen.

Det har givet anledning til problemer, da der ikke har været nogen synkroniseringsmekanisme mellem trådene til at sørge for, at de kan blokere for hinanden på de enkelte devices, og herefter give plads til en anden tråd.

Et andet problem har været ujævn hastighed af skrivning af data, hvis trådene ligger og konkurrerer med hinanden.

»Det kan brugeren så opleve ved, at man sidde og slår i musen og tænker 'hvad pokker sker der'. Målet var derfor både at gøre udskrivningen af data hurtigere og mere jævn,« siger Jens Axboe, der til daglig arbejder for Oracle.

Kernen er nu gået fra at have ét sæt pdflush-tråde helt overordnet til alle devices i systemet, og til nu at have én tråd per device, og muligheden for flere tråde per device er ifølge Jens Axboe på tegnebrættet.

Det betyder, at en tråd nu nedlægges igen, hvis der alligevel ikke var brug for den, og omvendt kan der skaleres op med flere tråde, end pdflush var i stand til, hvis det er nødvendigt.

»Formålet med per-BDI writeback var at løse problemet med starvation (enkelte tråde, der sjældent eller aldrig kommer til fadet, red.), og med ujævn skrivning af data i pdflush, og det er også den primære grund til, at per-BDI writeback er hurtigere,« siger Jens Axboe.

Ifølge Jens Axboe er den nye kode både over 20 procent hurtigere end pdfludsh og skriver data jævnt med over én gigabyte per sekund.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere