透明大页是什么(大页和透明大页)

前段时间介绍了巨页内存在虚拟化中的使用,但是使用巨型页有坏处:必须手工配置,虚拟机的数量,可用的内存,虚拟机的启动,关闭,迁移都需要重新配置,并且不能使用swap。

透明巨页内存

今天介绍下透明巨页内存,使用透明巨页内存的好处:

1 可以使用swap,内存页默认是2M大小,需要使用swap的时候,内存被分割为4k大小

2 对用户透明,不需要用户做特殊配置

3 不需要root权限

4 不需要依某种库文件

透明巨页内存配置

centos6以上默认启用透明巨页内存,查看目前状态

cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

修改配置

echo never >/sys/kernel/mm/transparent_hugepage/enabled

参数说明

never 关闭,不使用透明内存

alway 尽量使用透明内存,扫描内存,有512个 4k页面可以整合,就整合成一个2M的页面

madvise 避免改变内存占用

使用情况监控

可以查看/sys/kernel/mm/transparent_hugepage/khugepaged下信息

pages_to_scan (默认 4096 = 16MB)

一个扫描周期被扫描的内存页数

scan_sleep_millisecs (默认 10000 = 10sec)

多长时间扫描一次

alloc_sleep_millisecs (默认 60000 = 60sec)

多长时间整理一次碎片

也可以查看/proc/meminfo信息

grep Huge /proc/meminfo

AnonHugePages: 266240 kB

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

使用注意要点:

虚拟机和宿主机都需要启动THP,这样可以获得以下好处

虚拟机的cpu可以使用2M的TLB

相同的算法

相同的代码

相同的内核镜像