【发布时间】:2014-08-26 05:00:24
【问题描述】:
我非常了解transparent hugepages 的工作原理,并且任何分配,例如由malloc 执行的分配,都可以通过大页面来满足。
我想知道的是,在分配后是否可以进行任何检查(可能是启发式的)以确定内存是否由大页面支持。
【问题讨论】:
-
我猜你可以在
/proc/中使用一些[pseudo-]文件;也许在/proc/self/maps中可以看到巨大的地图 .... -
proc(5)提到/proc/self/smaps有AnonHugePages和VmFlags: ht... -
为了将来参考,即使在具有大量 RAM 的机器上,我发现
echo always > /sys/kernel/mm/transparent_hugepage/defrag(在/etc/rc.local或其他中)在大分配的实际页数方面有很大的不同如果您没有专门使用madvise(MADV_HUGEPAGE),最终会变成 2M 大页面(在/proc/PID/smaps中)。使用 defrag=always,几乎所有可以使用大页面的分配确实使用大页面。 (所以这可能是一个好主意,除非您的工作负载涉及大量映射/取消映射而不触及大部分内存,尤其是有足够的 RAM 以降低碎片整理成本。)
标签: c++ linux performance x86 huge-pages