Linux£¬×÷Ϊ¿ªÔ´²Ù×÷ϵͳµÄٮٮÕߣ¬Æ¾½èÆäÇ¿´óµÄ¿É¶¨ÖÆÐÔ¡¢³öÉ«µÄÎȶ¨ÐÔºÍ׿ԽµÄÐÔÄÜ£¬ÔÚÖÚ¶àÁìÓòÕ¼¾ÝÁËһϯ֮µØ
È»¶ø£¬Ëæ×ÅÊý¾ÝÁ¿µÄ¼¤ÔöºÍÓ¦ÓóÌÐòµÄ¸´ÔÓ»¯£¬ÄÚ´æ¹ÜÀí³ÉΪÁËÓ°ÏìLinuxϵͳÐÔÄܵĹؼüÒòËØÖ®Ò»
ÆäÖУ¬Ò³ÃæÇ¨ÒÆ£¨Page Migration£©×÷ΪһÖָ߼¶µÄÄÚ´æ¹ÜÀí¼¼Êõ£¬¶ÔÓÚÓÅ»¯×ÊÔ´·ÖÅä¡¢ÌáÉýϵͳÏìÓ¦ËٶȾßÓв»¿É¹ÀÁ¿µÄ¼ÛÖµ
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÒ³ÃæÇ¨ÒÆµÄÔÀí¡¢ÊµÏÖ»úÖÆÒÔ¼°ÆäÔÚÌáÉýϵͳÐÔÄÜ·½ÃæµÄÏÔÖø×÷ÓÃ
Ò»¡¢LinuxÄÚ´æ¹ÜÀí»ù´¡ ÔÚÉîÈë̽ÌÖÒ³ÃæÇ¨ÒÆÖ®Ç°£¬ÓбØÒªÏÈÁ˽âLinuxÄÚ´æ¹ÜÀíµÄ»ù±¾¿ò¼Ü
LinuxÄÚ´æ¹ÜÀíÖ÷Òª¸ºÔðÎïÀíÄÚ´æµÄ·ÖÅäÓë»ØÊÕ¡¢ÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄÓ³É䣨ͨ¹ýÒ³±í£©¡¢ÒÔ¼°ÄÚ´æ±£»¤µÈ¹¦ÄÜ
ÆäºËÐÄ»úÖÆ°üÀ¨·ÖÒ³£¨Paging£©ºÍ½»»»£¨Swapping£©
- ·ÖÒ³£ºLinux½«ÎïÀíÄÚ´æ»®·ÖΪ¹Ì¶¨´óСµÄÒ³£¨Í¨³£Îª4KB£©£¬Ã¿¸ö½ø³ÌÓµÓжÀÁ¢µÄÐéÄâµØÖ·¿Õ¼ä£¬Í¨¹ýÒ³±íʵÏÖÐéÄâµØÖ·µ½ÎïÀíµØÖ·µÄת»»
µ±½ø³Ì·ÃÎÊij¸öÐéÄâµØÖ·Ê±£¬Èç¹û¶ÔÓ¦µÄÎïÀíÒ³²»ÔÚÄÚ´æÖУ¨¼´·¢ÉúȱҳÖжϣ©£¬ÏµÍ³»á´¥·¢Ò³Ãæµ÷¶È»úÖÆ£¬´Ó´ÅÅÌ»òÆäËû´æ´¢½éÖÊÖмÓÔØ¸ÃÒ³
- ½»»»£ºµ±ÎïÀíÄÚ´æ²»×ãʱ£¬Linux»á½«²»»îÔ¾µÄÄÚ´æÒ³£¨Í¨³£ÊÇÕû¸ö½ø³Ì»ò½ø³ÌµÄÒ»²¿·Ö£©½»»»µ½´ÅÅÌÉϵĽ»»»¿Õ¼ä£¨Swap Space£©£¬ÒÔÊÍ·ÅÎïÀíÄڴ湩ÆäËû½ø³ÌʹÓÃ
ËäÈ»½»»»»úÖÆÄÜÓÐЧÀ©Õ¹ÏµÍ³¿ÉÓÃÄڴ棬µ«Æµ·±µÄ´ÅÅÌI/O²Ù×÷»áÏÔÖø½µµÍϵͳÐÔÄÜ
¶þ¡¢Ò³ÃæÇ¨ÒƵĸÅÄîÓëÖØÒªÐÔ Ò³ÃæÇ¨ÒÆÊÇÖ¸ÔÚLinuxϵͳÖУ¬½«ÄÚ´æÒ³´ÓÒ»¸öÎïÀí½Úµã£¨ÈçCPU»òNUMA¼Ü¹¹ÖеÄÄÚ´æÓò£©Òƶ¯µ½ÁíÒ»¸öÎïÀí½ÚµãµÄ¹ý³Ì
ÕâÒ»¼¼Êõ¶ÔÓÚÌá¸ß¶àºË´¦ÀíÆ÷ºÍ¶à½Úµã·þÎñÆ÷»·¾³ÏµÄÄÚ´æÊ¹ÓÃЧÂÊÖÁ¹ØÖØÒª
1.ÓÅ»¯ÄÚ´æ²¼¾Ö£ºÍ¨¹ýÒ³ÃæÇ¨ÒÆ£¬ÏµÍ³¿ÉÒÔ¸ù¾Ýµ±Ç°µÄÄÚ´æÊ¹ÓÃÇé¿öºÍÈÎÎñ·Ö²¼£¬¶¯Ì¬µ÷ÕûÄÚ´æÒ³µÄλÖã¬Ê¹µÃÊý¾Ý¸ü½Ó½ü´¦ÀíËüµÄCPU£¬¼õÉÙÄÚ´æ·ÃÎÊÑÓ³Ù£¬Ìá¸ß»º´æÃüÖÐÂÊ
2.¸ºÔؾùºâ£ºÔÚ¶à½ÚµãϵͳÖУ¬Ò³ÃæÇ¨ÒÆÓÐÖúÓÚʵÏÖÄÚ´æ×ÊÔ´µÄ¾ùºâ·ÖÅ䣬·ÀֹijЩ½ÚµãÒòÄÚ´æ¹ýÔØ¶ø³ÉΪÐÔÄÜÆ¿¾±£¬¶øÆäËû½ÚµãÔò´¦ÓÚ¿ÕÏÐ״̬
3.Ö§³Ö¸ß¿ÉÓÃÐÔºÍÈÝ´í£ºÔÚijЩ¸ß¿ÉÓÃÐÔÅäÖÃÖУ¬Ò³ÃæÇ¨ÒÆ¿ÉÒÔÓÃÓÚÔÚÓ²¼þ¹ÊÕÏǰ½«¹Ø¼üÊý¾ÝÇ¨ÒÆµ½½¡¿µµÄ½Úµã£¬È·±£·þÎñµÄÁ¬ÐøÐÔ
Èý¡¢LinuxÒ³ÃæÇ¨ÒÆµÄʵÏÖ»úÖÆ LinuxÒ³ÃæÇ¨ÒÆµÄʵÏÖÉæ¼°¶à¸ö²ã´ÎµÄÐͬ¹¤×÷£¬Ö÷Òª°üÀ¨Äں˼¶Ö§³Ö¡¢Óû§¿Õ¼ä¹¤¾ßÒÔ¼°Ó²¼þÌØÐÔ
1.ÄÚºËÖ§³Ö£ºLinuxÄÚºËÌṩÁËÒ³ÃæÇ¨ÒÆµÄ»ù´¡¿ò¼Ü£¬°üÀ¨Ò³ÃæÒƶ¯ÇëÇóµÄ´¦Àí¡¢Ò³ÃæËø¶¨»úÖÆ¡¢ÒÔ¼°Ç¨Òƹý³ÌÖеÄͬ²½ÓëÒ»ÖÂÐÔά»¤
`kswapd`ÊØ»¤½ø³Ì¸ºÔð¼à¿ØÄÚ´æÊ¹ÓÃÇé¿ö£¬²¢ÔÚ±ØÒªÊ±´¥·¢Ò³Ãæ»ØÊÕºÍÇ¨ÒÆ²Ù×÷
2.Óû§¿Õ¼ä¹¤¾ß£ºnumactlºÍ`numamove`µÈ¹¤¾ßÔÊÐíÓû§Ö¸¶¨½ø³ÌµÄÄÚ´æ·ÖÅä²ßÂÔ£¬°üÀ¨½«½ø³Ì»òÌØ¶¨ÄÚ´æÇøÓòÇ¨ÒÆµ½Ö¸¶¨µÄNUMA½Úµã
ÕâЩ¹¤¾ßͨ¹ýµ÷ÓÃÄÚºËÌṩµÄAPIʵÏÖÒ³ÃæÇ¨ÒÆ
3.Ó²¼þÌØÐÔ£ºÏÖ´ú´¦ÀíÆ÷ºÍÄÚ´æÏµÍ³Í¨³£Ö§³ÖһЩӲ¼þÌØÐÔ£¬ÈçÔ¶³ÌÄÚ´æ·ÃÎÊ£¨Remote Memory Access, RMA£©ÓÅ»¯£¬ÕâÐ©ÌØÐÔÄܹ»¼ÓËÙÒ³ÃæÔÚ²»Í¬ÎïÀí½Úµã¼äµÄÇ¨ÒÆ£¬¼õÉÙÇ¨ÒÆ¹ý³ÌÖеÄÐÔÄÜËðºÄ
ËÄ¡¢Ò³ÃæÇ¨ÒƵÄʵ¼ù°¸ÀýÓëЧ¹û·ÖÎö 1.Êý¾Ý¿âÓÅ»¯£ºÔÚ´óÐÍÊý¾Ý¿âϵͳÖУ¬Êý¾ÝÈȵãºÍË÷ÒýƵ·±±ä»¯£¬Í¨¹ýÒ³ÃæÇ¨ÒÆ½«ÈȵãÊý¾ÝÇ¨ÒÆµ½¿¿½ü²éѯ´¦Àí½ÚµãµÄÄڴ棬¿ÉÒÔÏÔÖøÌáÉý²éѯÐÔÄÜ£¬¼õÉÙÏìӦʱ¼ä
2.HPCÓ¦Ó㺸ßÐÔÄܼÆË㣨HPC£©Ó¦ÓÃÖУ¬ÈÎÎñͨ³£¸ß¶È²¢ÐУ¬ÇÒÊý¾ÝÒÀÀµÐÔ¸´ÔÓ
Ò³ÃæÇ¨ÒÆÄܹ»°ïÖúÓÅ»¯Êý¾Ý¾Ö²¿ÐÔ£¬¼õÉÙ¿ç½ÚµãÊý¾Ý´«Ê䣬Ìá¸ß¼ÆËãЧÂÊ
3.ÔÆ·þÎñÌṩÉÌ£ºÔÚÔÆ»·¾³ÖУ¬×ÊÔ´°´Ðè·ÖÅäºÍ¶¯Ì¬µ÷ÕûÊdz£Ì¬
Ò³ÃæÇ¨ÒÆÊ¹µÃÔÆ·þÎñÌṩÉÌÄܹ»ÔÚ²»Ó°ÏìÓû§·þÎñµÄǰÌáÏ£¬Áé»îµ÷ÕûÐéÄâ»ú£¨VM£©µÄÄÚ´æ²¼¾Ö£¬ÓÅ»¯×ÊÔ´ÀûÓÃÂÊ£¬½µµÍ³É±¾
Îå¡¢ÃæÁÙµÄÌôÕ½ÓëδÀ´Õ¹Íû ¾¡¹ÜÒ³ÃæÇ¨ÒÆ´øÀ´ÁËÖî¶àÐÔÄÜÉϵĺô¦£¬µ«ÆäʵÏÖ²¢·ÇûÓÐÌôÕ½
Ç¨ÒÆ¹ý³ÌÖеÄͬ²½¿ªÏú¡¢Ç¨Òƾö²ßµÄ׼ȷÐÔ¡¢ÒÔ¼°¿ç½ÚµãͨÐŵÄÑÓ³Ù¶¼ÊÇÐèÒª¿¼ÂǵÄÎÊÌâ
´ËÍâ£¬Ëæ×Åϵͳ¹æÄ£µÄÀ©´óºÍ¸´ÔÓÐÔµÄÔö¼Ó£¬ÈçºÎÓÐЧ¹ÜÀíÇ¨ÒÆÇëÇó¡¢±ÜÃâÇ¨ÒÆ·ç±©£¨¼´´óÁ¿Ò³ÃæÍ¬Ê±Ç¨ÒƵ¼ÖµÄϵͳ²»Îȶ¨£©Ò²ÊÇÒ»´óÌôÕ½
δÀ´£¬Ëæ×ÅÓ²¼þ¼¼ÊõµÄ²»¶Ï½ø²½£¨Èç¸ü¿ìµÄÄÚ´æ·ÃÎÊËÙ¶È¡¢¸ü¸ßЧµÄ¿ç½ÚµãͨÐÅÐÒ飩ºÍLinuxÄں˵ijÖÐøÓÅ»¯£¬Ò³ÃæÇ¨ÒƵÄЧÂʽ«½øÒ»²½ÌáÉý
ͬʱ£¬½áºÏÈ˹¤ÖÇÄܺͻúÆ÷ѧϰ¼¼Êõ£¬ÊµÏÖ¸üÖÇÄܵÄÇ¨ÒÆ¾ö²ß£¬½«ÊÇÒ³ÃæÇ¨ÒÆ¼¼Êõ·¢Õ¹µÄÖØÒª·½Ïò
½áÓï LinuxÒ³ÃæÇ¨ÒÆ¼¼Êõ£¬×÷ΪÄÚ´æ¹ÜÀíÁìÓòµÄÒ»Ïî¸ß¼¶ÌØÐÔ£¬¶ÔÓÚÌáÉý¶àºË¡¢¶à½Úµã»·¾³ÏµÄϵͳÐÔÄܾßÓÐÖØÒªÒâÒå
ͨ¹ýÓÅ»¯ÄÚ´æ²¼¾Ö¡¢ÊµÏÖ¸ºÔؾùºâÒÔ¼°Ö§³Ö¸ß¿ÉÓÃÐÔºÍÈÝ´í£¬Ò³ÃæÇ¨ÒÆ²»½öÌá¸ßÁËϵͳµÄÏìÓ¦ËٶȺÍ×ÊÔ´ÀûÓÃÂÊ£¬»¹Îª¸÷ÀàÓ¦Óó¡¾°ÌṩÁ˸üΪÁé»îºÍ¸ßЧµÄÄÚ´æ¹ÜÀí½â¾ö·½°¸
Ëæ×ż¼ÊõµÄ²»¶ÏÑݽø£¬ÎÒÃÇÓÐÀíÓÉÏàÐÅ£¬Ò³ÃæÇ¨Òƽ«ÔÚδÀ´¼ÌÐø·¢»Ó¸ü¼ÓÖØÒªµÄ×÷Óã¬Íƶ¯LinuxϵͳÐÔÄÜÂõÏòеĸß