獲取 SuperPage 大小
似乎有些 BSD 系統的超級頁面大小為 2MB,而另一些則為 4MB。我沒見過其他人。有沒有辦法告訴可用的超級頁面大小是多少?理想情況下從命令行,而不必啟用它們。
對於 XNU 和 Mach 核心(MacOS/Darwin),如果我正確讀取標題,在 x86_64 上它始終為 2MB,否則不支持。
要動態執行此操作,您必須執行以下操作:
echo "#include <mach/vm_statistics.h>" | gcc -dM -E - | grep VM_FLAGS_SUPERPAGE_SIZE_
Alan L. Cox 做了一些有趣的Opteron 基準測試,並且是原始超級頁面論文(在 Usenix 2002 上發表)的合著者:實用、透明的作業系統對超級頁面的支持
Superpages 於 2013 年在FreeBSD 7.2 for amd64 和 i386中引入
$$ amd64, i386 $$FreeBSD 虛擬記憶體子系統現在支持完全透明地使用超級頁面作為應用程序記憶體;應用程序記憶體頁面被動態提升或降級為超級頁面,而無需對應用程式碼進行任何修改。此更改提供了大頁面大小的好處,例如提高了虛擬記憶體效率和減少 TLB(翻譯備份緩衝區)未命中,而沒有應用程序更改和虛擬記憶體不靈活等缺點。這在預設情況下是禁用的,可以通過將 loader 可調參數設置
vm.pmap.pg_ps_enabled
為1
.2014 年,它被添加到FreeBSD 10.0 for ARMv6/v7。它動態支持 4KB 和 1MB 頁面。修訂版 25418聲明
vm.pmap.sp_enabled
使用(設置在 中loader.conf
)。如果您不使用 loader,請在sys/arm/arm/pmap-v6.c
. Zbigniew Bodek 有一個很好的 BSDcan 展示文稿:Transparent Superpages Support for FreeBSD on ARM您使用sysctl檢查它:
$ uname -rm 11.2-STABLE amd64 $ sysctl vm.pmap.pg_ps_enabled vm.pmap.pg_ps_enabled: 1
Linux 在 2011 年獲得了核心版本 2.6.38的大頁面(超級頁面)支持。另請參閱巨頁介紹。在 Linux 上(僅!)這是由hugeadm處理的,正如另一個答案中所暗示的那樣。
至於 OS XI認為它是預設啟用的,但我絕不是這方面的權威來源。似乎當他們測試時,他們只是嘗試分配超級頁面。我看不到檢查是否啟用了超級頁面。