Estou trabalhando em um programa que precisa detectar em tempo de execução se o sistema que está sendo executado suporta heapepages e, em caso afirmativo, quais tamanhos estão disponíveis. Idealmente, gostaria que isso funcionasse para qualquer plataforma POSIX, mas uma solução específica para Linux seria um começo.
O POSIX suporta sysconf(_SC_PAGESIZE)
para obter o tamanho de página padrão na plataforma, mas não parece apoiar de forma semelhante qualquer tamanho de página ampliada. Eu também poderia verificar, tentando mmap
MAP_HUGE_2MB
ou MAP_HUGE_1GB
argumentos, mas isso seria lento, e no caso de páginas enormes de 1 GB, seria um desperdício incrível (e poderia facilmente falhar devido à falta de memória disponível).