Linux память, отображающая файл с помощью HUGETBL - PullRequest
0 голосов
/ 20 февраля 2020

Я заинтересован в использовании отображенного в памяти файла для быстрого ввода-вывода, я делал это несколько раз, прежде чем без проблем. Я думаю, что я также пересекаю границу страницы каждый раз, когда я получаю доступ к памяти после 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 )

1 Ответ

1 голос
/ 20 февраля 2020

Я не уверен, является ли это вашим действительным кодом или опечаткой в ​​вашем сообщении, но у вас есть MAP_HUGETLB вместо MAP_HUGETBL в вашем коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...