[Linux] Benchmark: lseek + read/write vs pread/pwrite
От: VladCore  
Дата: 31.01.20 06:39
Оценка: -1
Нигде не написано насколько быcтрее syscall-ы линукса (точнее pread & pwrite врапперы в libc.so) от скажем так "стандартных" fseek+read/write

То что seek жрет неслабо ресурсы я в курсе.
А так же то что если kernel не поддерживает pread/pwrite sys-колы то glibс эмулирует "прозрачно" работу pread/pwrite

На все темы народ начинает обсуждать что pread/pwrite это для других сценариев использования. но насколько быстрее pread/pwrite чем lseek+read/write никто не говорит.

Речь только про рандомный доступ. Про aio и mmf я в курсе. интересует именно pread/pwrite производительность блоками по 4К по сравнению seek+read/write

Вот это я перечитал два раза:
http://man7.org/linux/man-pages/man2/pwrite.2.html

тут цитата и слово emulate недвусысленно намекает что pwrite/pread быстрее.

The pread() and pwrite() system calls were added to Linux in version
2.1.60; the entries in the i386 system call table were added in
2.1.69. C library support (including emulation using lseek(2) on
older kernels without the system calls) was added in glibc 2.1.


Но вот это цитата может ввести в заблуждение что быстрее не факт что будет бо pwrite/pread это для [только?] random многопоточного доступа.

The pread() and pwrite() system calls are especially useful in
multithreaded applications. They allow multiple threads to perform
I/O on the same file descriptor without being affected by changes to
the file offset by other threads.


Это тоже 2 раза прочитал:
https://stackoverflow.com/questions/20560992/between-read-and-pread-which-way-has-more-efficient
Яркий пример про то что никто так и не написал про эффективность в random access

Рассскажите о своем опыте.

Так же интересует опыт кто сравнивал уже готовый бенчмарк random-доустпа в fio.
он умеет и seek+read/write: --ioengine=sync
он умеет и pread/write: --ioengine=psync

P.S. Если предположение что pwrite/pread быстрее верно, то на SSD-SATA/SSD-PCIe/HDD, разумеется, разница будет отличаться. на PCI-E NVME будет больше разница или меньше?
Отредактировано 02.02.2020 2:35 VladCore . Предыдущая версия . Еще …
Отредактировано 31.01.2020 6:50 VladCore . Предыдущая версия .
Отредактировано 31.01.2020 6:47 VladCore . Предыдущая версия .
Отредактировано 31.01.2020 6:43 VladCore . Предыдущая версия .
Отредактировано 31.01.2020 6:41 VladCore . Предыдущая версия .
Отредактировано 31.01.2020 6:40 VladCore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.