Проблема с mmap для записи состоит в том, что вы не знаете, когда запись завершена или даже запущена, это может увеличить число операций записи, которые диск должен выполнить в LBA, поскольку память была записана, но не завершена4 КБ, запись была произведена на диск, а затем данные были снова записаны в память, и теперь страница должна быть записана снова.
Если вы хотите просто, лучше всего использовать файл O_DIRECT ииспользуйте системный вызов записи или AIO.Если вам нужна наилучшая скорость, вы можете использовать SPDK для получения необработанного доступа к устройству NVMe без вмешательства ядра и записи с нулевым копированием.
SPDK - это драйвер для устройств NVMe, полностью в пользовательском пространстве.Это означает, что вы используете драйвер ядра для сопоставления PCIe BAR с пользовательским пространством, говорите SPDK подключиться к устройству NVMe, и теперь вы можете выдавать необработанные команды NVMe на устройство без какой-либо копии.Большим преимуществом по сравнению с простым mmap является то, что у вас есть полный контроль над тем, какие операции ввода-вывода выполняются, в каком порядке и сколько команд одновременно выполняются и их размеры.Это означает больше работы для приложения, но это действительно дает вам полный контроль и лучшую производительность.