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/ に書かれている。