web-dev-qa-db-ja.com

SuperPageのサイズを取得する

一部のBSDシステムのスーパーページサイズは2MBであるのに対し、他のBSDシステムのスーパーページサイズは4MBのようです。私は他に見たことがありません。利用可能なスーパーページのサイズを知る方法はありますか?理想的にはコマンドラインから、それらを有効にする必要はありません。

1
OrangeDog

Alan L. Coxはいくつかの興味深いものを作成しました Opteronベンチマーク そして元のスーパーページペーパー(Usenix 2002で発表)の共著者でした: スーパーページの実用的で透過的なオペレーティングシステムのサポート

スーパーページは2013年に導入されました FreeBSD 7.2 AMD64およびi386用

[AMD64、i386] FreeBSD仮想メモリサブシステムは、アプリケーションメモリのスーパーページの完全に透過的な使用をサポートするようになりました。アプリケーションメモリページは、アプリケーションコードを変更することなく、スーパーページに動的に昇格または降格されます。この変更により、アプリケーションの変更や仮想メモリの柔軟性の低下などの欠点がなく、仮想メモリの効率が向上し、TLB(トランスレーションルックアサイドバッファ)ミスが減少するなど、ページサイズが大きくなるという利点があります。これはデフォルトで無効になっており、ローダーの調整可能なvm.pmap.pg_ps_enabled1に設定することで有効にできます。

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 のとき、彼らは単にスーパーページを割り当てようとしているようです。スーパーページが有効になっているかどうかのチェックが表示されません。

1
Claus Andersen

XNUおよびMachカーネル(MacOS/Darwin)の場合、 ヘッダー を読んでいると、x86_64では常に2MBになります。それ以外の場合は、サポートされていません。

これを動的に行うには、次のようなことを行う必要があります。

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