-
Hallo Leute,
heute hab ich mal eine Kleinigkeit zum Thema Dateisysteme unter Linux.
Unter Linux gibt es ja bekanntlich einen Haufen Dateisysteme, die bekanntesten darunter sind wohl Ext2, Ext3 und ReiserFS. Die beiden letzteren sind wohl heutzutage als Standard zu bezeichnen da sie von einer Vielzahl an (wenn nicht allen) Distributionen bei der Einrichtung der Festplatte automatisch genutzt, oder aber zur Auswahl angeboten werden.
Ich war heute mal so frei einen kleinen Benchmark laufen zu lassen der mal hoffentlich einigermassen vergleichbare Daten liefert.
Als Benchmark hab ich Bonnie++ genommen. Alle Tests wurden in einem 512MB grossen Image-File durchgefuehrt welches per Loopback gemountet war. Also nicht auf einer eigenen Partition sondern auf meiner root-Partition in einer Datei. Das sollte aber kein Beinbruch sein, denn fuer alle Dateisystem galten ja die gleichen Konditionen.
Angegeben hab ich 192MB Speicher, sodass also von Bonnie++ 384MB geschrieben und gelesen wurden.
Noch ein klein wenig zur Testumgebung: Mein Rechner ist ein AMD Athlon XP 3000+, 1GB DDR 400, Linux from Scratch mit Kernel 2.6.19. Gebootet hab ich in die Shell und es lief so gut wie nichts (nur was bei mir beim Booten gestartet wird, und das ist wirklich so gut wie nichts). Die Image-Dateien wurden auf einer 25GB Ext3-Partition auf einer UDMA133-Platte angelegt.
Getestet hab ich folgende Dateisystem:- Ext 2
- Ext 3
- Ext 4
- ReiserFS
- JFS
- XFS

Ich moechte an dieser Stelle noch einwerfen, dass diese Werte moeglicherweise nicht unbedingt Werte aus reellen Situationen wiedergeben, ich werde, wenn ich die Zeit finde mal noch etwas ausfuehrlichere Tests mit groesseren Datenmenge starten und diese Werte dann nachreichen. Ausserdem werd ich dann mal schauen warum die Random Seeks anscheinend nicht durchgefuehrt wurden. Moeglicherweise ist dies ein separater Parameter.
Die Werte hier sollen also nur einen groben Ueberblick geben ueber die Performance der Dateisysteme. Naehere Informationen zu den Einsatzbereichen und auch Staerken und Schwaechen der Systeme finden sich sicher zuhauf im Internet.
Nun zu den einzelnen Messergebnissen. Um die Einrueckungen beizubehalten hab ich hier Code-Tags genutzt. Eigentlich wollte ich Quote-Tags nutzen, da wurden aber die Einrueckungen zerhackt.
Ext2:
Ext3:Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 20973 51 55322 18 52930 14 42346 97 684496 98 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 5275 99 +++++ +++ +++++ +++ 5303 99 +++++ +++ 17340 100 raven,384M,20973,51,55322,18,52930,14,42346,97,684496,98,+++++,+++,16,5275,99,+++++,+++,+++++,+++,5303,99,+++++,+++,17340,100
Ext4:Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 20166 60 53893 39 19654 6 42896 98 710800 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 1888 99 +++++ +++ +++++ +++ 1948 99 +++++ +++ 4800 97 raven,384M,20166,60,53893,39,19654,6,42896,98,710800,99,+++++,+++,16,1888,99,+++++,+++,+++++,+++,1948,99,+++++,+++,4800,97
ReiserFS:Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 21703 65 97042 67 22618 7 39758 91 705389 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 1692 99 +++++ +++ +++++ +++ 1757 99 +++++ +++ 5589 99 raven,384M,21703,65,97042,67,22618,7,39758,91,705389,99,+++++,+++,16,1692,99,+++++,+++,+++++,+++,1757,99,+++++,+++,5589,99
JFS:Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 35117 87 5014 1 167730 41 42828 98 671693 96 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 30257 98 +++++ +++ 24518 99 30139 100 +++++ +++ 23072 99 raven,384M,35117,87,5014,1,167730,41,42828,98,671693,96,+++++,+++,16,30257,98,+++++,+++,24518,99,30139,100,+++++,+++,23072,99
XFS:Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 38270 88 76757 20 37801 9 42982 98 704741 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ 32571 69 13405 79 +++++ +++ 14974 57 raven,384M,38270,88,76757,20,37801,9,42982,98,704741,99,+++++,+++,16,+++++,+++,+++++,+++,32571,69,13405,79,+++++,+++,14974,57
Code :1 2 3 4 5 6 7 8 9
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP raven 384M 32657 76 187710 48 38431 10 43793 98 675350 96 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 11380 77 +++++ +++ 12097 72 10807 79 +++++ +++ 3885 28 raven,384M,32657,76,187710,48,38431,10,43793,98,675350,96,+++++,+++,16,11380,77,+++++,+++,12097,72,10807,79,+++++,+++,3885,28
Um mal einen kurzen Direktvergleich zu liefern hier die jeweiligen Zusammenfassungen.
Reihenfolge wie zuvor.
Der Einfachheit halber hab ich hier beiden Konstanten Werte am Anfang (Hostname und zu schreibender/lesender Speicher) und die Werte fuer blosse Datei- und Verzeichniserstellung am Ende abgeschnitten.
Nach den jeweiligen Zahlen moechte ich einen kurzen Kommentar zu den Werten abgeben, werde aber darauf verzichten alles haarklein zu zerlegen. Es werden hier jeweils 3 Zahlenpaare gezeigt, zuerst ein Durchsatz in KB/s, gefolgt von der erzeugten CPU-Auslastung.
Zuerst mal die Werte fuer Schreibvorgaenge.
Die beiden ersten Werte stehen fuer zeichenweises Schreiben, gefolgt von blockweisem Schreiben und anschliessend Ueberschreiben von bestehenden Daten.
Hier faellt auf, dass die Ext-Serie beim Zeichenweisen schreiben der Konkurrenz scheinbar hinterherhaengt. Sieger nach Punkten scheint hierbei JFS zu sein, welches sich dabei aber "mal eben" 88% der CPU-Zeit goennt. Wesentlich CPU-schonender, aber offensichtlich nur halb so schnell ist da Ext2, welches aber als einziger der getesteten Dateisysteme nicht ueber ein Journal verfuegt und somit heutzutage nicht mehr unbedingt "aktuell" ist. Ich selbst nutze ein Ext2-Dateisystem fuer meine /boot-Partition, das war es dann aber auch.Code :1 2 3 4 5 6
20973,51,55322,18,52930,14 20166,60,53893,39,19654,6 21703,65,97042,67,22618,7 35117,87,5014,1,167730,41 38270,88,76757,20,37801,9 32657,76,187710,48,38431,10
Ueberraschend ist der Einbruch von ReiserFS beim blockweisen Schreiben. Da werden sicher umfangreichere Tests die ich bei Zeiten mal durchfuehren will evtl. noch ein wenig Licht in's Dunkel bringen ob es sich hier vielleicht um einen Messfehler handelt.
Positiv faellt hier jedoch Ext4 auf, welches beim blockweisen Schreiben gegenueber seinen Vorgaengern scheinbar ordentlich zugelegt hat. Der Wert von XFS hingegen muss wohl auch nochmal ueberprueft werden da er ausserordentlich hoch ist und im Grunde sogar ueber dem Wert meiner UDMA133-Platte liegt.
In Sachen CPU-Auslastung hat hier klar das gute, alte Ext2 die Nase vorn, koennte also fuer aeltere Rechner noch durchaus interessant sein. Wem es allein um die Geschwindigkeit geht duerfte mit JFS oder XFS gut beraten sein, wobei XFS die CPU etwas schonender zu behandeln scheint als JFS.
Und nun die Werte fuer Lesevorgaenge.
Wie bei den Schreibvorgaengen stehen die ersten beiden Zahlenpaare fuer zeichen- und blockweises Schreiben, werden hier aber gefolgt von zufaelligen Zugriffen, die aber anscheinend nicht getestet wurden.
Hier ist auf den ersten Blick deutlich, dass es in Sachen CPU-Auslastung keine wirklichen Unterschiede gibt, obwohl Ext4 mit "nur" 91% beim zeichenweisen Lesen etwas heraussticht. Was den Wert meiner Meinung nach dazu verdonnert nochmal unter die Lupe genommen zu werden. Auch bei der Performance schenken sich die getesteten Dateisysteme nicht viel. Beim zeichenweisen Lesen scheint Ext4 etwas zurueck zu haengen, beim blockweisen Lesen ReiserFS und XFS.Code :1 2 3 4 5 6
42346,97,684496,98,+++++,+++ 42896,98,710800,99,+++++,+++ 39758,91,705389,99,+++++,+++ 42828,98,671693,96,+++++,+++ 42982,98,704741,99,+++++,+++ 43793,98,675350,96,+++++,+++
Es zeichnet sich hier also ab, dass sich die Dateisysteme scheinbar hauptsaechlich im Bereich des Schreibzugriffes unterscheiden, sowohl bei der CPU-Belastung als auch in der Uebertragungsrate.
Wie bereits zuvor gesagt scheint Ext2 eine interessante Wahl fuer aeltere Rechner darzustellen. Das Dateisystem ist ausserdem sehr gut getestet und stabil. Bei einem spontanen Ausfall (z.B. Stromausfall) ist beim Reboot jedoch ein ausfuehrlicher Dateisystemcheck angesagt da es hier noch kein Journal gibt. Was wahrscheinlich auch die Erklaerung sein duerfte, dass die CPU hier recht gelassen bleiben kann.
Beim blockweisen Schreiben scheint sich Ext4 etwas herauszuheben (wie gesagt, der Wert von XFS ist meiner Meinung nach etwas unglaubwuerdig), verschlingt dabei aber dann auch mehr CPU-Zeit als die anderen Dateisysteme. Aber da Ext4 jetzt erst frisch im Kernel aufgenommen wurde und noch experimentell ist kommt es als Dateisystem fuer ein Produktionssystem eh nicht in Frage.
Wer auf totalen Durchsatz setzt scheint mit JFS gut bedient zu sein, aber eben auf Kosten der CPU-Auslastung. XFS dagegen scheint ein recht guter Kompromiss zwischen Performance und CPU-Stress zu sein.
Ich hoffe ich konnte mit meinem kurzen Test ein paar nuetzliche Informationen verbreiten.
In nicht all zu fernen Zukunft moechte ich den Test noch etwas ausweiten, also mit groesseren Datenmengen arbeiten, und werde die Ergebnisse dann hier praesentieren. Moeglicherweise hat sich dann auch bei Ext4 noch ein wenig was getan (all zu viel wird das bis dahin aber wahrscheinlich nicht sein) und vielleicht naeh ich mir auch mal Reiser4 in den Kernel um das auch zu testen.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
Ähnliche Themen
-
Linux Entwickler gesucht fuer HTC WIZARD
Von ds2k5 im Forum Handy, PDA & mobile WeltAntworten: 0Letzter Beitrag: 20.08.06, 09:53 -
Ein kleiner Vogel
Von paulee im Forum FotografieAntworten: 3Letzter Beitrag: 01.08.06, 14:13 -
Ein kleiner Test
Von ezelda im Forum SmalltalkAntworten: 55Letzter Beitrag: 07.01.05, 14:26 -
lib fuer microsoft unter linux benutzen
Von aFrI im Forum C/C++Antworten: 3Letzter Beitrag: 31.08.03, 20:05 -
Was fuer ein Scanner?
Von Spliffstar im Forum HardwareAntworten: 2Letzter Beitrag: 04.12.01, 14:19




Login





Lesezeichen