2017-09-07 8 views
1

これまでのところ、/ mnt/hugepages1G /のファイルをバッキングとして使用しようとしたとき、segfaultsを取得しました。/mnt/hugepagesで2Mのスーパーページを使うとうまくいきます1Gスーパーページを共有mmapsに戻すことはできますか?

Linuxは2Mの共有メモリしかサポートしていません。しかし、私はそれに誓うことはできません。ドキュメントで見つけることができません。

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/vm/hugetlbpage.txt?id=HEAD

$ hugeadm --poolリスト 主張は、マウントコマンドが成功した2Mと1G

両方のページを持っています。次の貧しいボゾについては

+0

カーネルドキュメントを共有可能なメモリとして巨大なページを使用するための条件の多くを示しています。特定のユーザーグループのメンバである*ページサイズ*オプションのファイルシステムをマウントすること、* shxxx *および* mmap *関数の適切な使用を含む。すべてのことは正しいのですか? –

+0

私はそう思います。再チェックする価値があるので、今すぐやります。ありがとう。 – Hal

答えて

2

あなたは間違いのx86-64 Linux上で共有mmapsをバックアップするために1Gのスーパーページを使用することができます。

ディストリビューション(ubu)4.4カーネルで動作する/ mnt/hugepages1G内のプロセス間で転送されるバイト数が正しく設定され、マウントされています。それは、コードが正しく取得するのが難しいという意味でより壊れやすいです、または、SIGBUSなどを取得します。ページサイズが1Gの場合、マップされた領域の長さパラメータとftruncateのサイズは、ページサイズの倍数である必要があります私はそれが働いていると思います。それをサポートするためのドキュメンテーションはありません。マニュアルページには、そうである必要はないと書かれています(ただし、スーパーページを念頭に置いてはいけません)。

最良のドキュメントはここにある: https://lwn.net/Articles/375096/

関連する問題