# Huge Pages From Android 15, the pKVM hypervisor supports Transparent Hugepages. This is a Linux feature which allows the kernel to allocate, when possible, a huge-page (typically, 2MiB on a 4K system). This huge-page being the size of a block, the hypervisor can leverage this allocation to also use a block mapping in the stage-2 page tables, instead of 512 individual contiguous single page mappings. Using block mappings brings a significant performance improvement by reducing the number of stage-2 page faults as well as the TLB pressure. However, finding a huge-page can be difficult on a system where the memory is fragmented. By default, huge-pages are disabled. ## Enabling THP ### 1. Sysfs configuration The sysfs configuration file that will enable THP for AVF is ``` /sys/kernel/mm/transparent_hugepages/shmem_enabled ``` This always defaults to `never`. It is recommended to set it to `advise` to benefit from the THP performance improvement. THPs can have an impact on the system depending on the chosen policy. The policy is configured with the following sysfs file: ``` /sys/kernel/mm/transparent_hugepages/defrag ``` The recommended policy is `never` as this has zero impact on the system. THPs would be used only if some are available. More information can be found in the Linux [admin guide](https://docs.kernel.org/admin-guide/mm/transhuge.html). ### 2. AVF configuration The guest VM configuration can select huge-pages with the `vm_config.json` option `"hugepages": true`. Alternatively, the `vm` command can also pass `--hugepages`.