Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Performance beim Dateizugriff

  1. #1
    Marcomaniac
    Gast

    Performance beim Dateizugriff

    Hallo Leute!

    Ich sitze gerade an einem Projekt bei dem ich die Aufgabe habe, die Performance zu erhöhen. Funktioniert gut bisher.

    Teil dieses (C++)-Programms ist ein integrierter Webserver, der je nach Frequentierung auf maximal zirka 100 Dateien (HTML-Dokumente, kleine Grafiken) zugreift, die im Betrieb nicht weiter verändert werden.

    Ich frage mich, ob es unter Linux Sinn macht, die Dateien alle in einer internen Hash-Tabelle abzulegen und von dort aus an die Clients weiter zu reichen, anstatt jedes mal die entsprechende Datei zu öffnen und an den Client durchzureichen.

    Ich weiß, dass Linux Dateien, auf die oft zugegriffen wird, ohnehin im RAM zwischenspeichert... Ich hab jedoch zu wenig Ahnung von den Linux-Interna, um sagen zu können, ob die selbst gepflegte Hash-Tabelle von Dateien tatsächlich "brauchbaren" Performance-Gewinn bringen könnte!

    Vielleicht kann mir jemand was dazu sagen?

    1000 Dank!!

    Marco

    PS: Läuft auf "Standard"-PC-Hardware

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    schau Dir mal mmap() an, damit mappst Du Dateien in den RAM.

    Jan

  3. #3
    Marcomaniac
    Gast
    ...vielen Dank für den Hinweis!
    Hab es nun mal schnell gemessen: Es ist unter Linux (2.6.24) tatsächlich 2-3x so schnell die Dateien mittels mmap in den Speicher zu mappen und dann "von dort aus" an einen Socket zu senden, als die Datei-Inhalte in einer eigenen (schnellen) Hash-Tabelle zu speichern und von dort aus weiterzuverarbeiten!

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    66
    Wenn du die Dateien unverändert sendest, kannst du übrigens auch den Aufruf sendfile() verwenden. Damit kannst du auch noch etwas Overhead sparen, auch wenn es wahrscheinlich nicht ganz so viel ausmacht wie der Umstieg auf mmap().

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •