Unix-system-calls-alloc-hugepages

提供:Dev Guides
移動先:案内検索

[top]#

|http://www.google.com/[Google] | a|

Web This Site
  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

[cols=",,,,,,,",]

| |  Home   | |  References   | |  Discussion Forums   | |  About TP  

[width="100%",cols="100%",]

a| == alloc_hugepages()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

alloc_hugepages、free_hugepages-hugeページの割り当てまたは解放。

概要

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)と巨大なページ(2または4 MiB)を認識しています。 同様に、ia64はいくつかのサイズの巨大なページを認識しています。 これらのシステムコールは、巨大なページをプロセスのメモリにマップしたり、再び解放したりするのに役立ちます。 巨大なページはメモリにロックされ、スワップされません。

_key_パラメータは識別子です。 ゼロの場合、ページはプライベートであり、子によって継承されません。 肯定の場合、ページは同じ_key_を使用して他のアプリケーションと共有され、子プロセスによって継承されます。

*free_hugepages* ()の_addr_パラメーターは、どのページが解放されているかを示します。これは、 *alloc_hugepages* ()の呼び出しの戻り値でした。 (メモリは、すべてのユーザーが解放すると最初に実際に解放されます。) *alloc_hugepages* ()の_addr_パラメーターはヒントであり、カーネルが従う場合と従わない場合があります。 アドレスは適切に配置する必要があります。

_len_パラメーターは、必要なセグメントの長さです。 巨大なページサイズの倍数でなければなりません。

_prot_パラメーターは、セグメントのメモリ保護を指定します。 PROT_READ、PROT_WRITE、PROT_EXECのいずれかです。

_key_が正でない限り、_flag_パラメーターは無視されます。 その場合、_flag_がIPC_CREATである場合、指定されたキーを持つものが存在しないときに新しい巨大なページセグメントが作成されます。 このフラグが設定されていない場合、指定されたキーを持つセグメントが存在しないときにENOENTが返されます。

返り値

成功すると、 alloc_hugepages ()は割り当てられた仮想アドレスを返し、 free_hugepages ()はゼロを返します。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
ENOSYS The system call is not supported on this kernel.

準拠

これらの呼び出しは、Linux 2.5.36から2.5.54にのみ存在しました。 これらの呼び出しは、Intelプロセッサー上のLinuxに固有のものであり、移植を目的としたプログラムでは使用しないでください。 実際、システムコール番号は再利用のためにマークされているので、これらを使用するプログラムは将来のカーネルでランダムに何かをするかもしれません。

ファイル

_/proc/sys/vm/nr_hugepages_設定済みhugetlbページの数。 これは読み取りと書き込みが可能です。

/proc/meminfo 3つの変数HugePages_Total、HugePages_Free、Hugepagesizeで、設定済みhugetlbページの数とそのサイズに関する情報を提供します。

ノート

システムコールはなくなりました。 これで、代わりにhugetlbfsファイルシステムを使用できます。 巨大なページ(CPUがそれらをサポートしている場合)によってサポートされるメモリは、 mmap ()を使用してこの仮想ファイルシステム内のファイルをマップすることにより取得されます。

hugeページの最大数は、 hugepages = ブートパラメーターを使用して指定できます。

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

|  

[cols="^",]

|Advertisements