"巨大なページ(1MBサイズ)"を使用し、mmapを使用してメモリを割り当てています。 4 GBのメモリを割り当てた後、mmapの戻り値は失敗します。巨大なページを使用して割り当てられたメモリには制限がありますか?
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE | MAP_HUGETLB, -1, 0);
ここMEMSIZE = 1ギガバイト
私は、ループ内のステートメントの上に呼び出しています。 4回までの反復はうまくいきます。 5回目の反復でmmapが失敗しました。
mmap(NULL, memsize, PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS |MAP_POPULATE , -1, 0);
上記の文(hugepagesなし)は、任意の反復回数で完全に機能します。私はhugepagesに関連する情報がありませんか? mmap fail after 4GBのように "MAP_NORESERVE"フラグも試しました。
どのような情報でも大歓迎です。ありがとうございました。
'mmap returns fail' - これは有用ではありません – KevinDTimm
あなたのシステムでどれくらい利用できますか?あなたは 'cat/proc/meminfo | grep HugePages'と呼ばれています。追加情報:https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt –
@KevinDTimm:戻り値(MAP_FAILED)を確認したところ、mmapが失敗したと判断しました。 – ANTHONY