kernel 支持的hugepage size
一般我们通过在命令行中添加参数hugepagesz 来指定大页的size,这部分代码的实现如下:
static __init int setup_hugepagesz(char *opt)
{
unsigned long ps = memparse(opt, &opt);
switch (ps) {
#ifdef CONFIG_ARM64_4K_PAGES
case PUD_SIZE:
#endif
case CONT_PMD_SIZE:
case PMD_SIZE:
case CONT_PTE_SIZE:
add_huge_page_size(ps);
return 1;
}
hugetlb_bad_size();
pr_err("hugepagesz: Unsupported page size %lu K\n", ps >> 10);
return 0;
}
__setup("hugepagesz=", setup_hugepagesz);
从这里可以看出大页的size 是不能随意指定的,kernel 最大支持4中 大页的size。且如果设置的
大页kernel 不支持的话,会报错hugepagesz: Unsupported page size
kernel 具体支持的大约size 如下:
//www.kernel.org/doc/html/latest/arm64/hugetlbpage.html