VFS – Virtual File System ist eine Abstraktionsschicht bzw. API um diverse Dateisysteme einheitlich ansprechen und steuern zu können. Hierbei ist es irrelevant ob es sich dabei um lokale Blockgeräte oder Netzwerkdateisysteme handelt. Jedes unterliegende Dateisystem wird durch das VFS angesprochen.
VFS ist nicht neu, allerdings wurden in der Linux-Kernel Version 2.6.38 einige Verbesserung eingebaut. Der „Path-Lookup“-Mechanismus und „dcache“ (Directory Cache) wurden neu überarbeitet. Ein Kommentar von Linus Torvald zufolge, dem Initiator und Projektleiter des Linux-Kernels, soll der Performancegewinn bis zu 35% betragen. Die Verbesserungen betreffen sowohl die Mulitthreaded-Skalierbarkeit als auch Singlethreaded-Operationen. Er hat dies mit einem „find . -size“ in seinem Home-Directory getestet.
Für mich hören sich diese Leistungen super an, vor allem wenn man seine Systemleistung ohne Kosten für neue Hardware steigern kann. Systeme die viele stat() System-Calls auf eine große Menge von Dateien und/oder Verzeichnisse anwenden, können hiervon profitieren. Zum Beispiel Mailserver mit sehr vielen Nutzern und jeweils tausenden Mails in den jeweiligen Konten oder Fileserver.
Grund genug für mich dies selbst auf die Probe zu stellen. In meinem Test habe ich auf einem Testsystem ebenfalls ein Homeverzeichnis mit git-Checkouts diverser Linux-Kernel Versionen verwendet und zusätzlich 1 Millionen Dateien in das Verzeichnis angelegt. Anschließend habe ich mit „time“ 30 mal „find“ über diese Homeverzeichnis laufen lassen, um einen Mittelwert zu erzeugen. Einmal mit dem aktuellen Stable-Debian-Kernel (2.6.32) und einmal mit einem neu kompilierten 3.0er Kernel auf dem selben System. Der Kernel 3.0 entspricht dank der neuen Namensgebung der Version 2.6.40.
Das Ergebnis war leider nicht so phenomenal, wie ich es erwartet hätte. Anstelle der im Voraus erwähnten 35% konnte ich nur 7% Leistungszuwachs gewinnen. Was natürlich auch nicht schlecht ist.
In vielen Distributionen wird ein Kernel (>=2.6.38) bereits eingesetzt. Auf Servern mit Debian Squeeze würde ich jedoch davon abraten und weiterhin den Kernel der Distribution verwenden, außer man benötigt dieses oder andere Features aus den aktuellen Versionen.
Kritisch: Fehler in Elasticsearch mit JDK22 kann einen sofortigen Stop des Dienstes bewirken
Update Seit gestern Abend steht das Release 8.13.2 mit dem BugFix zur Verfügung. Kritischer Fehler Der Elasticsearch Dienst kann ohne Vorankündigung stoppen. Diese liegt an einem Fehler mit JDK 22. In der Regel setzt man Elasticsearch mit der "Bundled" Version ein....
vielen Dank für den gedanklichen Anstoß mich nun vielleiht doch einmal mit VFS zu befassen. Bisher bin ich immer ganz gut ohne ausgekommen, aber interessant ist es schon…