获取超级页面大小

获取超级页面大小

似乎某些 BSD 系统的超级页面大小为 2MB,而其他系统则为 4MB。我没见过其他人。有什么方法可以知道可用的超级页面大小是多少?理想情况下从命令行,并且无需启用它们。

答案1

艾伦·考克斯 (Alan L. Cox) 做了一些有趣的事情皓龙基准测试并且是原始超级页面论文(在 Usenix 2002 上发表)的合著者:实用、透明的操作系统对超级页面的支持

超级页面于 2013 年推出自由BSD 7.2适用于 amd64 和 i386

[amd64、i386] FreeBSD 虚拟内存子系统现在支持完全透明地使用应用程序内存的超级页面;应用程序内存页可以动态提升到超级页或从超级页降级,无需对应用程序代码进行任何修改。此更改提供了大页面大小的好处,例如提高虚拟内存效率和减少 TLB(转换后备缓冲区)未命中,而没有应用程序更改和虚拟内存不灵活性等缺点。默认情况下此功能处于禁用状态,可以通过将加载程序可调参数设置vm.pmap.pg_ps_enabled为 来启用1

2014年,它被添加到自由BSD 10.0适用于 ARMv6/v7。支持4KB和1MB页面动态地修订版 25418所使用的状态vm.pmap.sp_enabled(在 中设置loader.conf)。如果您不使用加载程序,请在sys/arm/arm/pmap-v6.c. Zbigniew Bodek 做了一个很棒的 BSDcan 演示:对 ARM 上的 FreeBSD 的透明超级页面支持

你使用它来检查它系统控制:

$ uname -rm
11.2-STABLE amd64
$ sysctl vm.pmap.pg_ps_enabled
vm.pmap.pg_ps_enabled: 1

Linux 在 2011 年内核中获得了大页面(超级页面)支持版本2.6.38。也可以看看大页面简介。在 Linux 上(仅限!),这是由巨大的adm正如另一个答案中所暗示的。

至于 OS XI思考它是通过以下方式启用的默认但我绝不是这方面的权威人士。似乎当他们测试他们只是尝试分配超级页面。我没有看到检查超级页面是否启用的情况。

答案2

对于 XNU 和 Mach 内核(MacOS/Darwin),如果我正在阅读标题是的,在 x86_64 上它始终是 2MB,否则不支持。

要动态地执行此操作,您必须执行以下操作:

echo "#include <mach/vm_statistics.h>" | gcc -dM -E - | grep VM_FLAGS_SUPERPAGE_SIZE_

相关内容