这两个函数执行不同的操作,在您的上下文中这可能无关紧要:
madvise
为所有与传递给它的区域相对应的内存映射设置一个标志,告诉khugepaged
内核线程可以考虑将所述映射提升为大页面。只有启用了透明大页面支持(在下提供了透明大页面支持的状态),这才起作用。/sys/kernel/mm/transparent_hugepage/enabled
在大多数发行版中都是这种情况,但是在嵌入式系统上可能会禁用。mmap
实际上将继续并保留内核内部hugetlbfs
装载中的页面,其状态可以在中查看/sys/kernel/mm/hugepages
。由时间问题所需要的页面,可mmap
调用(见HugePages_Free
的/proc/meminfo
),或mmap
将失败。
这两种机制在内核树中都有自己的doc文件:hugetlbpage.txt和transhuge.txt



