Login
Newsletter
Werbung

Mo, 25. Juni 2007, 12:17

Gesellschaft::Politik/Recht

Neue Blockpuffer-Implementation für Linux vorgeschlagen

Nick Piggin hat den Prototyp einer neuen Implementation der Blockpuffer-Schicht für Linux vorgestellt, die weniger Speicher benötigen und andere Vorteile bringen soll.

Die Blockpuffer-Schicht liegt zwischen dem Seiten-Cache und den Blockgeräten, auf denen Dateisysteme angelegt werden. Sie ist kein Cache und darf nicht mit dem Puffer-Cache für Blockgeräte verwechselt werden, der unter Linux mit dem Seiten-Cache vereinigt ist. Sie verwaltet vielmehr die Umsetzung von logischen Offsets in physische Blocknummern sowie Meta-Informationen wie Sperren, Änderungs- und I/O-Status für jeden Block. Diese Informationen werden in Datenstrukturen namens buffer_head gehalten.

Die Schicht wird von den meisten Dateisystemen genutzt. Auf jeden, der Änderungen daran vornimmt, kommt eine Menge Arbeit zu, da ggf. alle Dateisysteme anzupassen sind. Es wurde bereits vorgeschlagen, auf diesen Code komplett zu verzichten, doch nach Piggins Meinung ist das derzeit noch nicht möglich, da er eine nützliche Aufgabe erfüllt. Piggin will allerdings erst gar nicht versuchen, den selten geänderten Code anzupassen. Stattdessen hat er eine neue Implementation entwickelt, die er »fsbuffer« nennt und die gleichzeitig mit dem alten Code existieren kann. Für seine Tests passte er das Minix-Dateisystem an den neuen Code an.

fsbuffer soll laut Piggin deutlich weniger Speicher benötigen. Der Overhead soll von 10% des RAMs, wie es jetzt der Fall ist, auf 3% sinken. Die notwendigen Sperren sollen sich vereinfachen lassen, Deadlocks sollen ausgeschlossen sein und das Halten von redundanten Informationen im Speicher soll vermieden werden. Der geringere Bedarf an Speicher und Cache sollte auch zu höherer Gesamtleistung führen.

Erste Kommentare von Jeff Garzik begrüßen die Neuimplementierung grundsätzlich. Es ist jedoch noch viel Erprobung nötig, bis fsbuffer in den offiziellen Kernel einziehen kann. Die Anpassung der Dateisysteme ext2 und danach ext3 soll zeigen, wo eventuell noch Mängel oder Fehler verborgen sind. Derzeit ist der neue Code nicht größer als der alte, bei Abschaltung der Unterstützung von großen Blöcken sogar ein Drittel kleiner. Es ist jedoch möglich, dass noch Ergänzungen nötig sind.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung