Andreas Kyek wrote:
On 18 Sep 2001, at 8:50, Thomas Franz wrote:
ich koennte ein paar Tipps gebrauchen, an welchen Stellen im System man die Performance verbessern kann, wenn man sehr viele Dateien in einem Verzeichnis hat ( 100000 - 200000). [...] Tja, da hast Du IMO in einen Problembereich hineingestoßen.
Ja, leider. Und ich wüßte auch nicht, wie man das Problem lösen sollte, wenn sich die Anzahl der Dateien pro Verzeichnis nicht verringern läßt.
Hier bei uns sind in diversen Verzeichnissen tausende von Files abgelegt. Dabei ist mir aufgefallen, daß der direkte Zugriff auf eine Datei z.B. mittels "ls -l Dateiname" schnell ist.
Richtig. Das Einlesen des eigentlichen Verzeichnisses ist noch ein relativ kleines Problem. Und damit kann man auch noch halbwegs schnell zu einem bekannten Dateinamen die entsprechende I-Node-Nummer finden und damit direkt auf diese eine Datei zugreifen. Auch ein einfaches ls ohne Optionen (ggf. darauf achten, ob ls ein Alias ist, das bereits Optionen impliziert) sollte noch einigermaßen zügig gehen. Auch dabei wird das Verzeichnis eingelesen (was in etwa dem Lesen einer entsprechend großen Datei entspricht), dann werden die Namen noch sortiert und das war's.
Schwieriger sind Zugriffe mit Wildcards "ls -l A*". Ist ja auch irgendwie klar.
Ja, denn dabei wird für jede einzelne Datei ein stat()-Aufruf gemacht, um die über den Dateinamen und die I-Node-Nummer (nur das steht im eigentlichen Verzeichnis) hinausgehenden Eigenschaften der Datei (die im I-Node stehen) herauszubekommen. Auch eine farbige Hervorhebung verschiedener Dateitypen macht diese Abfrage nötig. Und das ist ein Aufwand, der deutlich über das einfache, sequentielle Lesen des Verzeichnisses hinausgeht. Man könnte überlegen, ob mehr Speicher etwas bringt. Wenn dieses Verzeichnis häufig aufgelistet wird, dann bleibt vielleicht ein Großteil der benötigten Daten im Cache und man spart sich beim wiederholten Aufruf zumindest ein paar Plattenzugriffe. Aber ich denke, so richtig schnell wird's damit auch nicht. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/