一部のBSDシステムのスーパーページサイズは2MBであるのに対し、他のBSDシステムのスーパーページサイズは4MBのようです。私は他に見たことがありません。利用可能なスーパーページのサイズを知る方法はありますか?理想的にはコマンドラインから、それらを有効にする必要はありません。
Alan L. Coxはいくつかの興味深いものを作成しました Opteronベンチマーク そして元のスーパーページペーパー(Usenix 2002で発表)の共著者でした: スーパーページの実用的で透過的なオペレーティングシステムのサポート
スーパーページは2013年に導入されました FreeBSD 7.2 AMD64およびi386用
[AMD64、i386] FreeBSD仮想メモリサブシステムは、アプリケーションメモリのスーパーページの完全に透過的な使用をサポートするようになりました。アプリケーションメモリページは、アプリケーションコードを変更することなく、スーパーページに動的に昇格または降格されます。この変更により、アプリケーションの変更や仮想メモリの柔軟性の低下などの欠点がなく、仮想メモリの効率が向上し、TLB(トランスレーションルックアサイドバッファ)ミスが減少するなど、ページサイズが大きくなるという利点があります。これはデフォルトで無効になっており、ローダーの調整可能な
vm.pmap.pg_ps_enabled
を1
に設定することで有効にできます。
2014年に、ARMv6/v7の FreeBSD 10. に追加されました。 4KBと1MBのページをサポートします 動的 。 リビジョン25418 は、vm.pmap.sp_enabled
が使用されていることを示しています(loader.conf
で設定)。ローダーを使用していない場合は、sys/arm/arm/pmap-v6.c
で見つけてください。 Zbigniew Bodekによる素敵なBSDcanプレゼンテーションがあります: ARMでのFreeBSDの透過的なスーパーページのサポート
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 X Ithinkに関しては、 default によって有効になりますが、私はこれに関する信頼できる情報源ではありません。彼らが test のとき、彼らは単にスーパーページを割り当てようとしているようです。スーパーページが有効になっているかどうかのチェックが表示されません。
XNUおよびMachカーネル(MacOS/Darwin)の場合、 ヘッダー を読んでいると、x86_64では常に2MBになります。それ以外の場合は、サポートされていません。
これを動的に行うには、次のようなことを行う必要があります。
echo "#include <mach/vm_statistics.h>" | gcc -dM -E - | grep VM_FLAGS_SUPERPAGE_SIZE_