Groups | Search | Server Info | Login | Register
Groups > de.comp.os.unix.programming > #3005
| From | Rainer Weikusat <rweikusat@talktalk.net> |
|---|---|
| Newsgroups | de.comp.os.unix.programming |
| Subject | Re: mmap oder read? |
| Date | 2022-06-09 20:37 +0100 |
| Message-ID | <87h74tmxuw.fsf@doppelsaurus.mobileactivedefense.com> (permalink) |
| References | <t7qnab.5fg.1@stefan.msgid.phost.de> <t7si7m$1nq5k$1@gwaiyur.mb-net.net> <t7tbt3.4m8.1@stefan.msgid.phost.de> |
Stefan Reuther <stefan.news@arcor.de> writes: > Am 09.06.2022 um 12:32 schrieb Jakob Hirsch: >> On 2022-06-08 17:46, Stefan Reuther wrote: >>> Was für Gründe kann es geben, sich bewusst für die eine oder die andere >>> Art zu entscheiden? Bisher bin ich - wie gesagt, Framework >> >> TLDR: Wenn man nur sequentiell liest, lohnt sich das wohl nur bei >> "großen" Dateien. Die Grenze liegt wohl irgendwo zwischen 1 und 8 MiB, >> wie man z.B. unter https://github.com/david-slatinek/c-read-vs.-mmap >> sieht (Werte sind bei mir ähnlich, hab allerdings nicht den code >> angeschaut). >> >> Eine recht interessante Diskussion gab es z.B. unter >> https://news.ycombinator.com/item?id=19806804 > > Danke für die Links. Für normale, handliche Daten ist also read() aus > Performancegründen zu bevorzugen. «Aus Performancegründen» (insofern das eine Rolle spielt) ist zu bevorzugen, wodurch man größere Lokalität erzielt, weil man dann mehr von diversem Caching hat, daß hier transparent von der Hardware und auch von der Virtualpeicherverwaltung gemacht wird[*]. Read mit einem Anwendungspuffer benutzt normalerweise Speicher, der dem Prozeß bereits zugeordnet ist. Damit sind die amortisierten Kosten des/ der dafür notwendigen page faults pro read 0. Ferner sorgt die durch read vorgenommene Kopie als Seiteneffekt dafür, Nutzdaten in den Cache and Adreßdaten in die TLB zu bringen (insofern sie nicht bereits drinstehen). Allerdings ist der Micro-Benchmark-Ansatz zu simpel: Mit read arbeitet die CPU trotzdem mehr, dh währenddessen kann niemand anderes die dafür benutzten CPU-Ausführungseinheiten verwenden. Es verbraucht auch mehr Strom und erzeugt mehr Abwärme. [*] Im Grundgenommen ist der virtuelle Addreßraum eines Prozesses ein teilweise bevölkerter/ gefüllter (populated) Cache für Speicherseiten, die der Kernel diesem grundsätzlich beliebig zuordnen oder wieder entziehen kann.
Back to de.comp.os.unix.programming | Previous | Next — Previous in thread | Next in thread | Find similar
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