Я заинтересован в использовании отображенного в памяти файла для быстрого ввода-вывода, я делал это несколько раз, прежде чем без проблем. Я думаю, что я также пересекаю границу страницы каждый раз, когда я получаю доступ к памяти после 4k (я передаю данные в эту карту памяти). Так что я подумал, что могу использовать огромные страницы, чтобы достичь размера страницы в 2 МБ для повышения эффективности и избежать мелких накладных расходов и штрафов. Когда я пытаюсь выделить свой файл отображения памяти с помощью HUGETLB, mmap завершается неудачно с ошибкой неверного аргумента. Итак, мой базовый c вопрос: поддерживаются ли огромные страницы с отображенными в память файлами?
вызов mmap для справки, memsize кратен 2M. mmapfd - это файловый дескриптор файла. Обратите внимание, что этот вызов работает нормально, если я не установил MAP_HUGETLB
m_mmap = mmap( nullptr, memsize, PROT_READ | PROT_WRITE, MAP_SHARED| MAP_HUGETLB, mmapfd, 0 )