H2o: warum brauchen wir MAP_SHARED für h2o_buffer_reserve()

Erstellt am 30. Dez. 2017  ·  3Kommentare  ·  Quelle: h2o/h2o

https://github.com/h2o/h2o/blob/master/lib/common/memory.c#L272

Gibt es andere Prozesse, die darauf zugreifen? wenn nicht , warum nicht MAP_PRIVATE einstellen

Können wir auch mremap(2) anstelle von mmap(2) und munmap(2) auf Plattformen verwenden, die mremap unterstützen?

Hilfreichster Kommentar

Gibt es andere Prozesse, die darauf zugreifen? wenn nicht, warum nicht MAP_PRIVATE setzen

Die Absicht der Verwendung von mktemps + fallocate + mmap besteht darin, einen dateigestützten Puffer zu erstellen, sodass die maximale Menge an Speicherplatz, die zum Puffern von Daten verwendet werden kann, durch den _freien Speicherplatz der Festplatte anstelle des Swap_ eingeschränkt wird. MAP_PRIVATE Konflikt mit diesem Ziel.

Können wir auch mremap(2) anstelle von mmap(2) und munmap(2) auf Plattformen verwenden, die mremap unterstützen?

Dies wäre möglich, wenn die hinzugefügten Seiten nicht anonym sind. Beachten Sie auch, dass, wenn die Verwendung von mremap eine merkliche Leistungsänderung zeigt, dies bedeuten sollte, dass wir die Wahrscheinlichkeit minimieren sollten, dass Seiten seit dem Aufheben der Zuordnung (entweder dauerhaft oder als Teil der Neuzuordnung) der zugeordneten Seiten verschoben werden. ist die teuerste Operation. Und das bedeutet nicht unbedingt, dass wir mremap .

Wie auch immer, das Puffern großer Datenmengen ist eine sekundäre Strategie, und ich halte es für keine gute Idee, Anstrengungen in die Verbesserung der Leistung zu investieren. Ich würde es vorziehen, an der Übernahme von Streaming-Anforderungen (siehe Nr. 1357) für andere Handler als den Proxy-Handler zu arbeiten.

Alle 3 Kommentare

Gibt es andere Prozesse, die darauf zugreifen? wenn nicht, warum nicht MAP_PRIVATE setzen

Die Absicht der Verwendung von mktemps + fallocate + mmap besteht darin, einen dateigestützten Puffer zu erstellen, sodass die maximale Menge an Speicherplatz, die zum Puffern von Daten verwendet werden kann, durch den _freien Speicherplatz der Festplatte anstelle des Swap_ eingeschränkt wird. MAP_PRIVATE Konflikt mit diesem Ziel.

Können wir auch mremap(2) anstelle von mmap(2) und munmap(2) auf Plattformen verwenden, die mremap unterstützen?

Dies wäre möglich, wenn die hinzugefügten Seiten nicht anonym sind. Beachten Sie auch, dass, wenn die Verwendung von mremap eine merkliche Leistungsänderung zeigt, dies bedeuten sollte, dass wir die Wahrscheinlichkeit minimieren sollten, dass Seiten seit dem Aufheben der Zuordnung (entweder dauerhaft oder als Teil der Neuzuordnung) der zugeordneten Seiten verschoben werden. ist die teuerste Operation. Und das bedeutet nicht unbedingt, dass wir mremap .

Wie auch immer, das Puffern großer Datenmengen ist eine sekundäre Strategie, und ich halte es für keine gute Idee, Anstrengungen in die Verbesserung der Leistung zu investieren. Ich würde es vorziehen, an der Übernahme von Streaming-Anforderungen (siehe Nr. 1357) für andere Handler als den Proxy-Handler zu arbeiten.

buffering large amount of data is a secondary strategy ist der Punkt.
schätze, das Programm fällt selten in mktemps + fallocate + mmap .

Streaming-Anfrage, die von einem Handler verarbeitet wird, der keine großen Puffer benötigt, oder?

Meiner Meinung nach ist die Verwendung von gemeinsam genutzten oder privaten mmap-Ressourcen (auch als temporärer Upload-Platzhalter) eine schlechte Idee. $TMP- oder $TMPDIR-Speicherort kann alles in der Benutzerumgebung sein, kann beispielsweise HDD sein.. Es ist nur ein zusätzlicher Schritt, den sich ein Administrator merken muss. Ganz zu schweigen davon, dass das gleichzeitige Hochladen großer Dateien leicht zu Speicherdruck führen würde, wenn $TMP ein Ramdisk-Mount ist.

Ich mag Ihren Vorschlag und Ihre Richtung sehr, um Streaming-Anforderungen mit Nicht-Proxy-Handlern zum Laufen zu bringen. Freue mich und bereit zum Testen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

wujunjenny picture wujunjenny  ·  5Kommentare

fetus-hina picture fetus-hina  ·  4Kommentare

taosx picture taosx  ·  6Kommentare

voiddeveloper picture voiddeveloper  ·  6Kommentare

kazuho picture kazuho  ·  7Kommentare