mbind

Autres langues

Langue: ja

Autres versions - même langue

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

Section: 2 (Appels système)

̾Á°

mbind - ¥á¥â¥êÎΰè¤ËÂФ·¤Æ¥á¥â¥ê¥Ý¥ê¥·¡¼¤òÀßÄꤹ¤ë

½ñ¼°


#include <numaif.h>



int mbind(void *start, unsigned long len, int policy,

          unsigned long *nodemask, unsigned long maxnode,

          unsigned flags);



cc ... -lnuma

ÀâÌÀ

mbind() ¤Ï¡¢ start ¤«¤é»Ï¤Þ¤ëŤµ len ¥Ð¥¤¥È¤ÎÈϰϤΥá¥â¥ê¤Ë NUMA ¥á¥â¥ê¥Ý¥ê¥·¡¼ policy ¤òÀßÄꤹ¤ë¡£ NUMA (ÈóÂоΥá¥â¥ê¥¢¥¯¥»¥¹) ¥Þ¥·¥ó¤Î¥á¥â¥ê¤ÏÊ£¿ô¤Î¥Î¡¼¥É¤Ëʬ³ä¤µ¤ì¡¢ ¥á¥â¥ê¥Ý¥ê¥·¡¼¤Ï¤É¤Î¥Î¡¼¥É¤Ë¥á¥â¥ê¤ò³ä¤êÅö¤Æ¤ë¤«¤ò·èÄꤹ¤ë¡£ mbind() ¤Ï¿·µ¬¤Î¥á¥â¥ê³ä¤êÅö¤Æ¤ËÂФ·¤Æ¤Î¤ß¸ú²Ì¤ò»ý¤Ä¡£ ¥Ý¥ê¥·¡¼¤¬ÀßÄꤵ¤ì¤ëÁ°¤Ë¤¹¤Ç¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëÈÏ°ÏÆâ¤Î¥Ú¡¼¥¸¤ËÂФ·¤Æ¤Ï¡¢ ¥Ý¥ê¥·¡¼¤Ï±Æ¶Á¤·¤Ê¤¤¡£

»ØÄê²Äǽ¤Ê¥Ý¥ê¥·¡¼¤Ï MPOL_DEFAULT, MPOL_BIND, MPOL_INTERLEAVE, MPOL_PREFERRED ¤Ç¤¢¤ë¡£ MPOL_DEFAULT °Ê³°¤Î¥Ý¥ê¥·¡¼¤Î¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¤¬ nodemask ¥Ñ¥é¥á¡¼¥¿¤Ç¥Ý¥ê¥·¡¼¤òŬÍѤ¹¤ë¥Î¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£ nodemask ¤Ï¥Î¡¼¥É¤Î¥Ó¥Ã¥È¥Þ¥¹¥¯¤Ç¤¢¤ê¡¢ maxnode ¸Ä¤Î¥Ó¥Ã¥È¤«¤é¹½À®¤µ¤ì¤ë¡£ ¤³¤Î°ú¤­¿ô·Ðͳ¤Ç¼ÂºÝ¤ËžÁ÷¤µ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢Ä¾¶á¤Î sizeof(unsigned long) ¤ÎÇÜ¿ô¤ËÀÚ¤ê¾å¤²¤é¤ì¤ë¤¬¡¢¥«¡¼¥Í¥ë¤¬»ÈÍѤ¹¤ë¤Î¤Ï maxnode ¸Ä¤Þ¤Ç¤Î¥Ó¥Ã¥È¤À¤±¤Ç¤¢¤ë¡£ °ú¤­¿ô NULL ¤Ï¥Î¡¼¥É¤Î¶õ½¸¹ç¤ò°ÕÌ£¤¹¤ë¡£

MPOL_DEFAULT ¥Ý¥ê¥·¡¼¤¬¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ê¡¢¤³¤ì¤ò»ØÄꤹ¤ë¤È ¥×¥í¥»¥¹¼«ÂΤΥݥꥷ¡¼¤¬»ÈÍѤµ¤ì¤ë (¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤Ï set_mempolicy(2) ¤ÇÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë)¡£ ¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ ³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿ CPU ¤Î¥Î¡¼¥É¤Ë¥á¥â¥ê¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È ¤Ë¤Ê¤ë¡£ nodemask ¤Ë¤Ï NULL ¤ò»ØÄꤹ¤Ù¤­¤Ç¤¢¤ë¡£

MPOL_BIND ¤Ï¸·¤·¤¤¥Ý¥ê¥·¡¼¤Ç¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤Ï nodemask ¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É¤Ë¸ÂÄꤵ¤ì¤ë¡£ ¾¤Î¥Î¡¼¥É¤Ø¤Î³ä¤êÅö¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£

MPOL_INTERLEAVE ¤Ç¤Ï¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤ò nodemask ¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É¤Ë¸ò¸ß¤Ë¹Ô¤¦¡£ ¤³¤Î¥Ý¥ê¥·¡¼¤Ç¤Ï¡¢ÃÙ±ä¤Ç¤Ï¤Ê¤¯¡¢ÂӰ褬ºÇŬ²½¤µ¤ì¤ë¡£ ¸ú²Ì¤òÆÀ¤ë¤Ë¤Ï¡¢¥á¥â¥êÎΰè¤ò¤¢¤ëÄøÅÙÂ礭¤¯¤¹¤Ù¤­¤Ç¤¢¤ê¡¢ ¾¯¤Ê¤¯¤È¤â 1MB °Ê¾åɬÍפǤ¢¤ë¡£

MPOL_PREFERRED ¤Ï¡¢³ä¤êÅö¤Æ»þ¤ËÍ¥À褵¤ì¤ë¥Î¡¼¥É¤òÀßÄꤹ¤ë¡£ ¥«¡¼¥Í¥ë¤Ï¤Þ¤ºÍ¥Àè¥Î¡¼¥É¤Ë³ä¤êÅö¤Æ¤ò¹Ô¤ª¤¦¤È¤·¡¢ Í¥Àè¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¾¯¤Ê¤¤¾ì¹ç¤Ë¾¤Î¥Î¡¼¥É¤Ë³ä¤êÅö¤Æ¤ò¹Ô¤¦¡£ nodemask ¤ÎºÇ½é¤Î¥Î¡¼¥É¤À¤±¤¬»ÈÍѤµ¤ì¤ë¡£ nodemask ¤Ë¤É¤Î¥Î¡¼¥É¤â¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿ CPU ¤Î¥Î¡¼¥É¤Ë¥á¥â¥ê³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£

flags ¤Ë MPOL_MF_STRICT ¤¬ »ØÄꤵ¤ì¡¢ policy ¤¬ MPOL_DEFAULT ¤Ç¤Ê¤¤¾ì¹ç¡¢ »ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¥Þ¥Ã¥Ô¥ó¥°¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¤È¡¢ mbind() ¤Ï¥¨¥é¡¼ EIO ¤Ç¼ºÇÔ¤¹¤ë¡£ 2.6.16 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤ÇÍ׵ᤵ¤ì¤¿¥Î¡¼¥É¤Ë ¥Ú¡¼¥¸¤ò°ÜÆ°¤·¤è¤¦¤È¤¹¤ë¡£

flags ¤Ë MPOL_MF_MOVE ¤¬»ØÄꤵ¤ì¤ë¤È¡¢¤½¤Î¥Þ¥Ã¥Ô¥ó¥°Æâ¤Î¤¹¤Ù¤Æ¤Î¥Ú¡¼¥¸¤ò°ÜÆ°¤·¡¢ »ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë½¾¤¦¤è¤¦¤Ë¤·¤è¤¦¤È¤¹¤ë¡£ ¾¤Î¥×¥í¥»¥¹¤È¶¦Í­¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤Ï°ÜÆ°¤µ¤ì¤Ê¤¤¡£ MPOL_MF_STRICT ¤â»ØÄꤵ¤ì¤¿¾ì¹ç¡¢°ÜÆ°¤Ç¤­¤Ê¤«¤Ã¤¿¥Ú¡¼¥¸¤¬¤¢¤ë¤È¡¢ mbind() ¤Ï¥¨¥é¡¼ EIO ¤Ç¼ºÇÔ¤¹¤ë¡£

flags ¤Ë MPOL_MF_MOVE_ALL ¤¬»ØÄꤵ¤ì¤ë¤È¡¢¤½¤Î¥Þ¥Ã¥Ô¥ó¥°Æâ¤Î¤¹¤Ù¤Æ¤Î¥Ú¡¼¥¸¤ò ¾¤Î¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸¤ò»ÈÍѤ·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë´Ø¤ï¤é¤º°ÜÆ°¤¹¤ë¡£ ¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤ÏÆø¢ (CAP_SYS_NICE) ¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ MPOL_MF_STRICT ¤â»ØÄꤵ¤ì¤¿¾ì¹ç¡¢°ÜÆ°¤Ç¤­¤Ê¤«¤Ã¤¿¥Ú¡¼¥¸¤¬¤¢¤ë¤È¡¢ mbind() ¤Ï¥¨¥é¡¼ EIO ¤Ç¼ºÇÔ¤¹¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤¹¤ë¤È¡¢ mbind() ¤Ï 0 ¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢-1 ¤òÊÖ¤·¡¢ errno ¤Ë¥¨¥é¡¼¤ò¼¨¤¹ÃͤòÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EFAULT
»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰè¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Ê¤¤Éôʬ (unmapped hole) ¤¬¤¢¤Ã¤¿¡¢ ¤â¤·¤¯¤Ï»ØÄꤵ¤ì¤¿¥Ý¥¤¥ó¥¿¤¬Í­¸ú¤Ç¤Ê¤«¤Ã¤¿¡£
EINVAL
flags ¤ä mode ¤ËÉÔÀµ¤ÊÃͤ¬»ØÄꤵ¤ì¤¿¡£ ¤Þ¤¿¤Ï start + len ¤¬ start ¤è¤ê¾®¤µ¤¤¡£ ¤Þ¤¿¤Ï policy ¤¬ MPOL_DEFAULT ¤Ç nodemask ¤¬»Ø¤¹½¸¹ç¤¬¶õ¤Ç¤Ê¤«¤Ã¤¿¡£ ¤Þ¤¿¤Ï policy ¤¬ MPOL_BIND ¤« MPOL_INTERLEAVE ¤Ç nodemask ¤¬¶õ¤Î½¸¹ç¤ò»Ø¤·¤Æ¤¤¤¿¡£
ENOMEM
¥·¥¹¥Æ¥à¤Î¥á¥â¥êÉÔ­¤Ç¤¢¤ë¡£
EIO
MPOL_MF_STRICT ¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¤³¤Î¥Ý¥ê¥·¡¼¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¥Î¡¼¥É¤Ë ¤¹¤Ç¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤·¤Æ¤¤¤¿¡£

½àµò

¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux Æȼ«¤Ç¤¢¤ë¡£

Ãí°Õ

NUMA ¥Ý¥ê¥·¡¼¤Ï¥Õ¥¡¥¤¥ë¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

MPOL_MF_STRICT ¤Ïº£¸½ºß¤Ï¥Ò¥å¡¼¥¸¥Ú¡¼¥¸ (huge page) ¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï̵»ë¤µ¤ì¤ë¡£

°­¤¤¤³¤È¤Ë¡¢ MPOL_DEFAULT ¤È¤¤¤¦Ì¾Á°¤¬Æ±¤¸¤Ç¡¢ mbind(2) ¤È set_mempolicy(2) ¤Ç°Û¤Ê¤ë°ÕÌ£¤ò»ý¤Ä¥Õ¥é¥°¤¬Â¸ºß¤¹¤ë¡£ mbind() ¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë ¡Ö³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿ CPU ¤Î¥Î¡¼¥É¤Ë³ä¤êÅö¤Æ¤ò¹Ô¤¦¡× (set_mempolicy(2) ¤Î MPOL_DEFAULT ¤ÈƱÍÍ) ¤òÁªÂò¤¹¤ë¤Ë¤Ï¡¢¶õ¤Î nodemask ¤Ç policy ¤Ë MPOL_PREFERRED ¤ò»ØÄꤹ¤ì¤Ð¤è¤¤¡£

¥Ð¡¼¥¸¥ç¥ó¤È¥é¥¤¥Ö¥é¥ê¤Ç¤ÎÂбþ

¥·¥¹¥Æ¥à¥³¡¼¥ë mbind(), get_mempolicy(2), set_mempolicy(2) ¤Ï¥Ð¡¼¥¸¥ç¥ó 2.6.7 ¤Ç Linux ¥«¡¼¥Í¥ë¤ËÄɲ䵤줿¡£ ¤³¤ì¤é¤Ï CONFIG_NUMA ¤òÍ­¸ú¤Ë¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥«¡¼¥Í¥ë¤Ç¤Î¤ßÍøÍѤǤ­¤ë¡£

2.6.16 ¤Ç¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¡¦¥Ý¥ê¥·¡¼¤Ø¤ÎÂбþ¤¬Äɲ䵤줿¡£ ¥¤¥ó¥¿¡¼¥ê¡¼¥Ö¡¦¥Ý¥ê¥·¡¼¤¬¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¸ú²Ì¤ò»ý¤Ä¤Ë¤Ï¡¢ ¥Ý¥ê¥·¡¼¤¬Å¬ÍѤµ¤ì¤ë¥á¥â¥ê¤¬¿ô½½¥á¥¬¥Ð¥¤¥È°Ê¾å¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£

MPOL_MF_MOVE ¤È MPOL_MF_MOVE_ALL ¤Ï Linux 2.6.16 °Ê¹ß¤Ç¤Î¤ßÍøÍѲÄǽ¤Ç¤¢¤ë¡£

¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤òľÀÜ»ÈÍѤ¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ Âå¤ï¤ê¤Ë¡¢ numactl ¥Ñ¥Ã¥±¡¼¥¸¤Î numa(3) ´Ø¿ô¤Ë¤è¤êÄ󶡤µ¤ì¤ë¹â¥ì¥Ù¥ë¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò »È¤¦¤Î¤¬Ë¾¤Þ¤·¤¤¡£ numactl ¥Ñ¥Ã¥±¡¼¥¸¤Ï ftp://ftp.suse.com/pub/people/ak/numa/ ¤ÇÆþ¼ê¤Ç¤­¤ë¡£

¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÄêµÁ¤òÆÀ¤ë¤Ë¤Ï¡¢ -lnuma ÉÕ¤­¤Ç¥ê¥ó¥¯¤¹¤ì¤Ð¤è¤¤¡£ libnuma ¤Ï numactl ¥Ñ¥Ã¥±¡¼¥¸¤ËÆþ¤Ã¤Æ¤¤¤ë¡£ ¤³¤Î¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë numaif.h ¤âÆþ¤Ã¤Æ¤¤¤ë¡£

´ØÏ¢¹àÌÜ

numa(3), numactl(8), set_mempolicy(2), get_mempolicy(2), mmap(2)