2007. november 9., péntek

Linuxos naplózó fájlrendszerek sebességtesztje

A teszt során négyféle Linuxos naplózó fájlrendszeren (EXT3, ReiserFS, JFS, XFS) végeztem sebességméréseket az IOzone nevű fájlrendszer tesztelő program segítségével. A program kifejezetten fájlrendszerek tesztelésére optimalizált, vagyis az eredmények nem a merevlemez adatátviteli sebességét tükrözik, hanem adott konfiguráció mellett az egyes fájlrendszerek teljesítményét mutatják. Mindegyik fájlrendszer azonos méretű, fizikailag egymást követő, egyenként 9GB méretű partíciókon kapott helyet, melyek a tesztprogramon kívül más adatot nem tartalmaztak.

A teszt négyféle sebesség mérésére terjedt ki, melyek a következők voltak: írás és újraírás, valamint véletlenszerű írás és véletlenszerű olvasás sebessége. A véletlenszerű írás/olvasás esetében nem a teljes fájlt, hanem annak véletlenszerűen kiválasztott rekordjait írja/olvassa a program, amely így egy adatbázis kiszolgáló háttértár működését szimulálja. Az első körben többféle rekordmérettel (4KByte – 16MByte), valamint különböző méretű fájlokkal (64KBbyte – 512MByte) végeztem méréseket. Mivel ekkora fájlok még beleférnek az operációs rendszer gyorsítótárába, így ez a teszt nem a tényleges lemezműveleti sebességeket mutatja, viszont jól tükrözi az egyes fájlrendszerek sebességviszonyait.

A mérések rámutattak, hogy az EXT3 fájlrendszer írási sebessége jelentősen alulmarad a másik három fájlrendszerhez képest, melyeken az írás több mint kétszer gyorsabban zajlik, ez a különbség azonban valamelyest csökken az újraolvasás vizsgálatánál. Ezen felül a másik három fájlrendszer teljesítménye sokkal kiegyensúlyozottabb, lényegesen kevesebb a sebességbeli ingadozás. Megfigyelhetjük, hogy adott konfiguráció esetén a legnagyobb sebességet a 128KByte-os rekordok esetén érjük el (adatok a leni táblázatban). Legszembetűnőbben ez a ReiserFS fájlrendszernél látszik, ahol ez az adatátviteli sebesség háromszorosa, illetve kétszerese a 4KByte-os, illetve 8KByteos rekordok esetén mért átviteli sebességnek. Ez a jelenség a kisebb rekordok magasabb fajlagos beviteli költségének tudható be.

Átlagsebességek 128KByte rekordméretnél

EXT3 MB/s

RFS MB/s

JFS MB/s

XFS MB/s

Írás

277,57

611,99

619,30

611,62

Arányok

44,82%

98,82%

100%

98,76

Véletlenszerű írás esetén a sebességviszonyok a következőképp alakultak: Szintén a JFS végzett az élen, amelyet a ReiserFS, majd az XFS követett 10, illetve 20%-os lemaradással. A sort ismét az EXT3 zárta, azonban a sebessége itt már megközelíti a JSF sebességének 70%át. Véletlenszerű írás során a legnagyobb átviteli sebességek 32KByte-os rekordméretet használva adódtak, az ekkor mért adatokat az alábbi táblázat foglalja össze:

Átlagsebességek 32KByte rekordméretnél

EXT3 MB/s

RFS MB/s

JFS MB/s

XFS MB/s

Véletlenszerű írás

1011,76

1319,7

1454,09

1182,1

Arányok

69,58%

90,76%

100%

81.29%


A teszt második felében egy, az operációs rendszer gyorsítótáránál nagyobb méretű fájllal végeztem a méréseket, fix rekordméret mellett. Ezzel elkerülhető volt, hogy a teszt folyamán a teljes fájl a fizikai memóriába kerüljön, felgyorsítva a műveletek sebességét, így valós képet kaphatunk a fájlrendszerek közti tényleges teljesítménybeli különbségekről. Az eredményeket az alábbi táblázat foglalja össze.


Sebességmérés 128KByte rekordmérettel, 3GByte-os fájllal MB/s

EXT3

RFS

JFS

XFS

Írás

29,58

29.79

33,93

31,89

Újraírás

29,11

30,1

36,15

32,13

Véletlenszerű olvasás

18,29

19,09

19,5

18,375

Véletlenszerű írás

17,84

38.39

36,95

31,03

Szekvenciális írás esetén a másik három fájlrendszer sebessége valamivel elmarad a JFS 33,93 MB/s-os értékétől, a legkisebb sebességű EXT3 fájlrendszerhez képest ez 14,7%-kal nagyobb sebességet jelent. Újraírás esetén ez a különbség még számottevőbb, 24,2%-os. Véletlenszerű olvasás és írás esetén értelem szerűen a sebességek a legtöbb esetben drasztikusan csökkennek. Meglepő lehet azonban, hogy a véletlenszerű írás sebessége a véletlenszerű olvasásénál két fájlrendszer esetében is jóval nagyobb értékeket mutat. Ez annak a következménye lehet, hogy írás esetén nem közvetlenül a merevlemezre történik az írás, hanem a rendszermemóriába, kiolvasáskor pedig a véletlenszerűen választott rekordok, igen kis valószínűséggel lesznek benne a gyorsítótárban. A JFS fájlrendszer, igaz csak 6,6%-kal a véletlenszerű olvasás esetén is megőrzi vezető pozícióját, azonban a véletlenszerű olvasásnál már az RFS fájlrendszer nyújtotta a legnagyobb sebességet, több mint kétszer gyorsabbnak bizonyult a leglassabb EXT3 fájlrendszernél.

A teszt rámutatott arra, hogy általánosságban JFS, vagy ReiserFS fájlrendszereket érdemes használni, mivel ez a két fájlrendszer nyújtja összességében a legnagyobb sebességeket. Kerülni kell azonban adatbázis kiszolgáló esetén az EXT3 fájlrendszer alkalmazását annak gyenge véletlenszerű íráskor nyújtott teljesítménye miatt.

Nincsenek megjegyzések: