alloc_hugepages

Autres langues

Langue: ja

Version: 2003-02-02 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

alloc_hugepages, free_hugepages - ¥Ò¥å¡¼¥¸¥Ú¡¼¥¸ (huge page) ¤Î³ä¤êÅö¤Æ¤È²òÊü¤ò¹Ô¤¦

½ñ¼°


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 °ú¤­¿ô¤Ï¼±Ê̻ҤǤ¢¤ë¡£ 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 ¤Î ¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÄ󶡤¹¤ë¡£

½àµò

¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux 2.5.36 ¤«¤é 2.5.54 ¤Ë¤Î¤ß¸ºß¤¹¤ë¡£ ¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Intel ¥×¥í¥»¥Ã¥µ¾å¤Î Linux ¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¢¤ê¡¢ °Ü¿¢À­¤ò°Õ¿Þ¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï»È¤¦¤Ù¤­¤Ç¤Ê¤¤¡£ ¼ÂºÝ¡¢¥·¥¹¥Æ¥à¥³¡¼¥ëÈÖ¹æ¤ÏºÆÍøÍѤ¹¤ë¤¿¤á¤Ë¥Þ¡¼¥¯¤µ¤ì¤Æ¤ª¤ê¡¢ ¤³¤ÎÈÖ¹æ¤ò»È¤¦¥×¥í¥°¥é¥à¤Ï¡¢¾­Íè¤Î¥«¡¼¥Í¥ë¤Ë¤ª¤¤¤Æ ²¿¤«¤Ç¤¿¤é¤á¤ÊÆ°ºî¤ò¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

Ãí°Õ

¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡£ Âå¤ï¤ê¤Ëº£¤Ï hugetlbfs ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ (CPU ¤¬¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç) ¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤ò»ý¤Ä¥á¥â¥ê¤Ï¡¢ mmap(2) ¤ò»È¤Ã¤Æ¤³¤Î²¾ÁÛ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¥Õ¥¡¥¤¥ë¤ò¥Þ¥Ã¥×¤¹¤ë¤³¤È¤Ç¼èÆÀ¤Ç¤­¤ë¡£

¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤ÎºÇÂç¿ô¤Ï¡¢ hugepages= ¥Ö¡¼¥È¥Ñ¥é¥á¡¼¥¿¤ò»È¤Ã¤Æ»ØÄê¤Ç¤­¤ë¡£