Groups | Search | Server Info | Login | Register


Groups > de.comp.os.unix.programming > #2999

Re: mmap oder read?

From Rainer Weikusat <rweikusat@talktalk.net>
Newsgroups de.comp.os.unix.programming
Subject Re: mmap oder read?
Date 2022-06-08 17:27 +0100
Message-ID <87v8tbce8t.fsf@doppelsaurus.mobileactivedefense.com> (permalink)
References <t7qnab.5fg.1@stefan.msgid.phost.de>

Show all headers | View raw


Stefan Reuther <stefan.news@arcor.de> writes:
> ich hab hier einen Microservice, der im Wesentlichen den lieben langen
> Tag Dateien aus (wenigen) Containerfiles (z.B. *.tar) aufbereitet und
> serviert.
>
> Je nachdem, wie ich die Framework-Komponenten zusammenstecke, bekomme
> ich für das Lesen einer Datei aus dem Container
>
>    mmap, <Verarbeiten>, munmap
>
> oder
>
>    malloc, read, <Verarbeiten>, free
>
> Was für Gründe kann es geben, sich bewusst für die eine oder die andere
> Art zu entscheiden?

Für Dateien würde ich im Normalfall mmap benutzen, weil das einfacher zu
handhaben ist: Anstatt Code zu schreiben, der einen Speicherbereich
beschafft und diesen mit Daten füllt, die man verarbeiten möchte, sagt
man einfach dem Kernel «gib mir einen Speicherbereich in dem meine Daten
drinstehen» und kann sie dann direkt verarbeiten.

Wie Hellmut Schellong hier allerdings mal in epischer Breite um die
Jahrtausendwende rum demonstriert hat, ist das normalerweise
langsamer, als read bzw scheint langsamer als read: Wenn man die Daten
erstmal aus einem Kernelpuffer in einen Anwendungspuffer kopiert, lädt
man sie nebenher auch in den Cache und nachfolgende Zugriffe müssen das
nicht noch einmal tun. Nach einem mmap bekommt man hingegen erstmal page
faults und cache und TLB misses, die alle nicht billig sind.

Möglicher Vorteil: Falls das viele Daten sind, auf die man nur lesend
zugreift, und die von anderen Prozessen ebenfalls gebraucht werden,
braucht man nur eine Kopie im Speicher und nicht eine pro Prozeß.

Back to de.comp.os.unix.programming | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-08 17:46 +0200
  Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-08 17:27 +0100
    Re: mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-09 17:52 +0200
  Re: mmap oder read? Jakob Hirsch <jh.expires-20221231@plonk.de> - 2022-06-09 12:32 +0200
    Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-09 15:17 +0100
    Re: mmap oder read? Stefan Reuther <stefan.news@arcor.de> - 2022-06-09 17:50 +0200
      Re: mmap oder read? Rainer Weikusat <rweikusat@talktalk.net> - 2022-06-09 20:37 +0100
        Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-10 07:30 +0200
  Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-09 13:18 +0200
    Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-10 09:06 +0200
    Re: mmap oder read? Bonita Montero <Bonita.Montero@gmail.com> - 2022-06-11 09:42 +0200
  Re: mmap oder read? Jan Bruns <ebay@abnuto.de> - 2022-07-02 05:27 +0000

csiph-web