ALLOC_HUGEPAGES
Section: Linux Programmer's Manual (2)
Updated: 2007-05-31
Index
JM Home Page
roff page
名前
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
引き数は、どのページを解放するかを指定する:
addr
は
alloc_hugepages()
の呼び出しの返り値である
(全てのユーザがメモリを解放したときに、
そのメモリは初めて実際に解放される)。
alloc_hugepages()
の
addr
引き数はヒントであり、カーネルはそれに従うかもしれないし、
従わないかもしれない。
アドレスは正しく配置されなければならない。
len
引き数は要求されたセグメントの長さである。
これはヒュージページのサイズの倍数にしなければならない。
prot
引き数はセグメントのメモリ保護を指定する。
これは
PROT_READ,
PROT_WRITE,
PROT_EXEC
のいずれかである。
key
が正でない限り、
flag
引き数は無視される。
key
が正で、かつ
flag
が
IPC_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=
ブートパラメータを使って指定できる。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- ファイル
-
- 準拠
-
- 注意
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:31 GMT, November 19, 2007