Is it possible to change virtual memory page size?

c, linux, x86-64

Solution

On x86_64 you can explicitly request 2 MiB pages instead of the usual 4 KiB pages with the help of hugetlbfs. On modern kernels with transparent huge page support a small pages can automagically concatenated to huge pages in the background, given that the memory fragmentation isn't to big and enough memory is still free.

Problem

Is it possible to change the virtual memory page size? I'm asking this because in the X86_64 part of the MMU article on wikipedia, it talks about different page sizes. If the page size can indeed be changed, how it is changed?

Original source