История изменений
Исправление Deleted, (текущая версия) :
write в лине дает полновесный цикл переключений контекста, пускай и один.
mmap позволяет отображать нужный тебе кусок файла - я не измерял производительность, но, по идее, это пара циклов переключений контекста - на mmap и на munmap.
Это очевидные вещи, т.е. это всё полноценные системные вызовы без vDSO. Но что вы хотели этим сказать?
При желании наградить меня ценными советами относительно libmdbx лучше сначала погуглить и немного вникнуть в тему.
Чтение из mmap без DMA точно так же будет давать тебе переключения контекста, если чо, так что я бы так не беспокоился про них до тех пор, пока не начинаешь волноваться про отдельную тысячу циклов процессора.
Причем тут DMA, если данные нужны в user-mode из файловой системы, которая может cifs/nfs не говоря про ftp/ssh под fuse?
При чтении могут быть page faults (конечно с переключением контекста) если данные не в памяти, а на диске. Всё.
msync нужен на OpenBSD не больше, чем он нужен на любой другой системе.
Без msync() измененные данные не обязаны попасть на диск. С MS_INVALIDATE всё сложнее, но в большинстве случаев он бесполезен (либо толком ничего не делает как в linux, либо не работает как в OpenBSD).
Исходная версия Deleted, :
write в лине дает полновесный цикл переключений контекста, пускай и один.
mmap позволяет отображать нужный тебе кусок файла - я не измерял производительность, но, по идее, это пара циклов переключений контекста - на mmap и на munmap.
Это очевидные вещи, т.е. это всё полноценные системные вызовы без vDSO. Но что вы хотели этим сказать?
При желании наградить меня ценными советами относительно libmdbx лучше сначала погуглить и немного вникнуть в тему.
Чтение из mmap без DMA точно так же будет давать тебе переключения контекста, если чо, так что я бы так не беспокоился про них до тех пор, пока не начинаешь волноваться про отдельную тысячу циклов процессора.
Причем тут DMA, если данные нужны в user-mode из файловой системы, которая может cifs/nfs не говоря про ftp/ssh под fuse?
При чтении могут быть page faults (конечно с переключением контекста) если данные не в памяти. Всё.
msync нужен на OpenBSD не больше, чем он нужен на любой другой системе.
Без msync() данные не обязаны попасть на диск, с MS_INVALIDATE всё сложнее, но в большинстве случаев он бесполезен (либо толком ничего не делает как в linux, либо не работает как в OpenBSD).