Я выделяю память, используя «огромные страницы (размер 1 МБ)» и используя mmap. После выделения 4 ГБ памяти, mmap возвращает fail.Есть ли ограничение на память, выделенное огромными страницами?
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE | MAP_HUGETLB, -1, 0);
здесь Memsize = 1GB
Я зову выше заявление в петле. До 4 итераций это нормально. В 5-й итерации mmap не удался.
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE , -1, 0);
Вышеуказанный оператор (без огромных страниц) отлично работает для любого количества итераций. Не хватает ли какой-либо информации, связанной с огромными страницами? Я попробовал флаг «MAP_NORESERVE» также, как упоминалось в mmap fail after 4GB.
Любая информация будет принята с благодарностью. Спасибо.
'mmap возвращает fail' - это не полезно – KevinDTimm
Сколько доступно в вашей системе? Вы можете перечислить его с помощью 'cat/proc/meminfo | grep HugePages'. Дополнительное чтение: https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt –
@KevinDTimm: я проверил возвращаемое значение (MAP_FAILED), тогда только я закончил mmap. – ANTHONY