Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


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

Re: mmap oder read?

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Rainer Weikusat <rweikusat@talktalk.net>
Newsgroups de.comp.os.unix.programming
Subject Re: mmap oder read?
Date Wed, 08 Jun 2022 17:27:14 +0100
Lines 34
Message-ID <87v8tbce8t.fsf@doppelsaurus.mobileactivedefense.com> (permalink)
References <t7qnab.5fg.1@stefan.msgid.phost.de>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
X-Trace individual.net MjqdH528bn/5gsE0qWOyowLqpHf6tCdGo0PUdu/C9ZDMXIJkI=
Cancel-Lock sha1:FZL4f/sNT42iqQfYzo4rE9bl3fE= sha1:nDBSm87jdIkbr4D13c+8I0VEcOI=
User-Agent Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Xref csiph.com de.comp.os.unix.programming:2999

Show key headers only | 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