Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       alloc_hugepages, free_hugepages - 大きなサイズのページの割り当てと解放を行う

書式

       void *alloc_hugepages(int key, void *addr, size_t len,
                             int prot, int flag);

       int free_hugepages(void *addr);

説明

       システムコール  alloc_hugepages()  と free_hugepages()  は Linux 2.5.36 で導入され、2.5.54 で再び削除され
       た。 これらのシステムコールは i386 と ia64 のみで (かつ CONFIG_HUGETLB_PAGE を指定してビルドされた場合に)
       存在する。 Linux 2.4.20 では syscall 番号が存在するが、 呼び出すとエラー ENOSYS で失敗する。

       i386  では、メモリー管理ハードウェアは通常のページ (4 KiB) と 大きなサイズのページ (以下、ヒュージページ;
       2MiB または 4 MiB) を 扱うことができる。 同様に、ia64  もいくつかのサイズのヒュージページを扱うことができ
       る。   これらのシステムコールは、ヒュージページをプロセスのメモリーにマップしたり、  再び解放したりする。
       ヒュージページはメモリー内にロックされ、スワップされない。

       key 引数は識別子である。 0 の場合、ページは非公開になり、子プロセスに継承されない。  正の場合、ページは同
       じ key を使う他のアプリケーションと共有され、子プロセスに継承される。

       free_hugepages()  の addr 引数は、どのページを解放するかを指定する: addralloc_hugepages()  の呼び出し
       の返り値である    (全てのユーザーがメモリーを解放したときに、     そのメモリーは初めて実際に解放される)。
       alloc_hugepages()   の  addr  引数はヒントであり、カーネルはそれに従うかもしれないし、 従わないかもしれな
       い。 アドレスは正しく配置されなければならない。

       len 引数は要求されたセグメントの長さである。 これはヒュージページのサイズの倍数にしなければならない。

       prot 引数はセグメントのメモリー保護を指定する。 これは PROT_READ,  PROT_WRITE,  PROT_EXEC  のいずれかであ
       る。

       key  が正でない限り、  flag  引数は無視される。 key が正で、かつ flagIPC_CREAT であり、かつ指定された
       key で (セグメントが) 何も存在しない場合、 新しいヒュージページセグメントが作成される。 flag が設定されて
       おらず、かつ指定された key のセグメントが存在しない場合、 ENOENT が返される。

返り値

       成功した場合、 alloc_hugepages()  は割り当てられた仮想アドレスを返し、 free_hugepages()  は 0 を返す。 失
       敗した場合、-1 を返し、 errno が適切に設定される。

エラー

       ENOSYS このシステムコールはカーネルでサポートされていない。

ファイル

       /proc/sys/vm/nr_hugepages
              設定された hugetlb ページの数。 このファイルは読み書きできる。

       /proc/meminfo
              設定された hugetlb ページの数と、 3 つの変数 HugePages_Total, HugePages_Free, Hugepagesize の サイ
              ズについての情報を提供する。

準拠

       このシステムコールは Intel プロセッサ上の Linux に固有のものであり、 移植性が必要なプログラムで使うべきで
       ない。

注意

       これらのシステムコールはなくなった。 これらは Linux  2.5.36  から  2.5.54  にのみ存在する。  代わりに今は
       hugetlbfs  ファイルシステムを使うことができる。 (CPU がサポートしている場合) ヒュージページを持つメモリー
       は、 mmap(2) を使ってこの仮想ファイルシステムでファイルをマップすることで取得できる。

       ヒュージページの最大数は、 hugepages= 起動パラメーターを使って指定できる。

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10  の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。