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 如下:

kernel 支持的hugepage size_第1张图片
//www.kernel.org/doc/html/latest/arm64/hugetlbpage.html

你可能感兴趣的:(Linux,源码分析)