Ò³Ãæ´óС²»½öÓ°Ïì×ÅϵͳµÄÄÚ´æÊ¹ÓÃЧÂÊ£¬»¹Ö±½Ó¹ØÏµµ½Ó¦ÓóÌÐòµÄÐÔÄܱíÏÖ
Òò´Ë£¬Á˽ⲢÊÊʱµ÷ÕûÒ³Ãæ´óС£¬¶ÔÓÚϵͳ¹ÜÀíÔ±ºÍ¿ª·¢Õß¶øÑÔ£¬ÊÇÒ»Ïî²»¿É»òȱµÄ¼¼ÄÜ
±¾ÎĽ«ÉîÈë̽ÌÖLinuxϵͳÖÐÒ³Ãæ´óСµÄ¸ÅÄî¡¢ÖØÒªÐÔ¡¢Ð޸ķ½·¨ÒÔ¼°Ç±ÔÚÓ°Ï죬ּÔÚΪ¶ÁÕßÌṩһ·ÝÈ«Ãæ¶øÊµÓõÄÖ¸ÄÏ
Ò»¡¢Ò³Ãæ´óСµÄ»ù±¾¸ÅÄî ÔÚLinuxµÄÄÚ´æ¹ÜÀíÖУ¬ÄÚ´æ±»»®·ÖΪһϵÁй̶¨´óСµÄ¿é£¬ÕâЩ¿é±»³ÆÎª¡°Ò³Ã桱
Ò³ÃæÊÇÄÚ´æ·ÖÅäºÍ¹ÜÀíµÄ×îСµ¥Î»£¬Ò²ÊÇÐéÄâÄÚ´æÏµÍ³µÄ»ù´¡
LinuxÖ§³Ö¶àÖÖÒ³Ãæ´óС£¬µ«×î³£¼ûµÄÒ³Ãæ´óСÊÇ4KB£¨ÔÚһЩ¼Ü¹¹ÉÏ£¬Èç64λx86¼Ü¹¹£¬Ò²³ÆÎªx86-64»òAMD64£¬Ä¬ÈÏÒ³Ãæ´óС¼´Îª4KB£©
È»¶ø£¬Ëæ×ÅÓ²¼þ¼¼ÊõµÄ·¢Õ¹ºÍÌØ¶¨Ó¦Óó¡¾°µÄÐèÇó£¬LinuxÒ²Ö§³Ö¸ü´óµÄÒ³Ãæ´óС£¬Èç2MB¡¢1GBµÄ´óÒ³Ãæ£¨Huge Pages£©ºÍ͸Ã÷´óÒ³Ãæ£¨Transparent Huge Pages, THP£©
¶þ¡¢Ò³Ãæ´óСµÄÖØÒªÐÔ 1.ÐÔÄÜÓÅ»¯£ºÊʵ±Ôö´óÒ³Ãæ´óС¿ÉÒÔ¼õÉÙÒ³±íÏîµÄÊýÁ¿£¬½µµÍCPU·ÃÎÊÄÚ´æÊ±µÄÒ³±í²éÕÒ¿ªÏú£¬´Ó¶øÌáÉýϵͳÐÔÄÜ
ÌØ±ðÊǶÔÓÚÐèÒª´óÁ¿ÄÚ´æ·ÃÎʵÄÓ¦Óã¬ÈçÊý¾Ý¿â¡¢´óÊý¾Ý·ÖÎöµÈ£¬´óÒ³ÃæÄÜÏÔÖø¼õÉÙTLB£¨Translation Lookaside Buffer£¬×ª»»ºó±¸»º³åÆ÷£©Î´ÃüÖеĴÎÊý£¬Ìá¸ß»º´æÃüÖÐÂÊ
2.ÄÚ´æ¹ÜÀíЧÂÊ£ºÐ¡Ò³ÃæËäÈ»Áé»î£¬µ«»áÔö¼ÓÄÚ´æË鯬»¯µÄ·çÏÕ£¬½µµÍÄÚ´æÀûÓÃÂÊ
´óÒ³ÃæÔòÄÜÓÐЧ¼õÉÙË鯬£¬Ìá¸ßÄÚ´æ¹ÜÀíµÄЧÂÊ
3.ÌØ¶¨Ó¦ÓÃÐèÇó£ºÄ³Ð©¸ßÐÔÄܼÆË㣨HPC£©»òʵʱϵͳ¿ÉÄÜÒªÇóÌØ¶¨µÄÒ³Ãæ´óСÅäÖã¬ÒÔÂú×ãÆä¶ÀÌØµÄÄÚ´æ·ÃÎÊģʽ
Èý¡¢ÐÞ¸ÄÒ³Ãæ´óСµÄ·½·¨ ÔÚLinuxϵͳÖУ¬ÐÞ¸ÄÒ³Ãæ´óСÖ÷Ҫͨ¹ýÒÔϼ¸ÖÖ·½Ê½ÊµÏÖ£º 1. ÅäÖÃÄÚºËÆô¶¯²ÎÊý LinuxÄÚºËÔÊÐíÔÚÆô¶¯Ê±Í¨¹ýGRUB£¨GRand Unified Bootloader£©»òÆäËûÒýµ¼¼ÓÔØ³ÌÐòÉèÖÃÒ³Ãæ´óСÏà¹ØµÄ²ÎÊý
ÀýÈ磬¶ÔÓÚx86-64¼Ü¹¹£¬¿ÉÒÔͨ¹ýÉèÖÃ`hugepagesz`ºÍ`hugepages`²ÎÊýÀ´ÅäÖôóÒ³ÃæµÄ´óСºÍÊýÁ¿
- `hugepagesz=
ÐÞ¸ÄÕâЩ²ÎÊýºó£¬ÐèÒª¸üÐÂGRUBÅäÖò¢ÖØÆôϵͳÒÔʹ¸ü¸ÄÉúЧ
2.ʹÓÃ`sysctl`¹¤¾ß
¶ÔÓÚ͸Ã÷´óÒ³Ãæ£¨THP£©£¬¿ÉÒÔͨ¹ý`sysctl`¹¤¾ß¶¯Ì¬ÆôÓûò½ûÓà `sysctl`ÔÊÐíÔÚÔËÐÐʱµ÷ÕûÄں˲ÎÊý£¬¶øÎÞÐèÖØÆôϵͳ
- ÆôÓÃTHP£º`sudo sysctl -w vm.transparent_hugepages=always`
- ½ûÓÃTHP£º`sudo sysctl -w vm.transparent_hugepages=never`
- ÁÙʱÐ޸ĺó£¬ÈôÏ£ÍûÓÀ¾ÃÉúЧ£¬Ð轫ÏàÓ¦ÅäÖÃÌí¼Óµ½`/etc/sysctl.conf`ÎļþÖÐ
3. ÊÖ¶¯·ÖÅä´óÒ³Ãæ
¶ÔÓÚÐèÒªÃ÷È·¿ØÖÆ´óÒ³Ãæ·ÖÅäµÄÓ¦ÓóÌÐò£¬¿ÉÒÔʹÓÃ`mmap`ϵͳµ÷ÓÃÅäºÏ`MAP_HUGETLB`±êÖ¾À´ÇëÇó´óÒ³Ãæ ´ËÍ⣬Linux»¹ÌṩÁË`hugetlbfs`£¨HugeTLB File System£©£¬ÔÊÐíÓû§¿Õ¼ä³ÌÐòͨ¹ý¹ÒÔØÌØÊâÎļþϵͳÀ´·ÃÎÊ´óÒ³Ãæ
- ¹ÒÔØhugetlbfs£º`sudo mount -t hugetlbfs none /mnt/huge`
- Ó¦ÓóÌÐòͨ¹ý·ÃÎÊ`/mnt/huge`Ŀ¼ÏµÄÎļþÀ´Ê¹ÓôóÒ³Ãæ
ËÄ¡¢ÐÞ¸ÄÒ³Ãæ´óСµÄDZÔÚÓ°Ïì
ËäÈ»µ÷ÕûÒ³Ãæ´óС¿ÉÒÔ´øÀ´ÐÔÄÜÉϵÄÌáÉý£¬µ«Ò²¿ÉÄÜÒý·¢Ò»ÏµÁÐÎÊÌ⣬Ðè½÷É÷²Ù×÷£º
1.ÄÚ´æÀË·Ñ£º´óÒ³Ãæ²»ÊʺÏСÄÚ´æ¿éµÄÐèÇ󣬿ÉÄܵ¼ÖÂÄÚ´æ×ÊÔ´µÄÀË·Ñ
2.Ë鯬»¯ÎÊÌ⣺ËäÈ»´óÒ³Ãæ¼õÉÙÁËÄÚ´æË鯬£¬µ«ÔÚijЩÇé¿öÏ£¬Ð¡Ò³Ãæ¿ÉÄܸüÊʺϴ¦ÀíË鯬»¯ÎÊÌâ
3.¼æÈÝÐÔÌôÕ½£º²¢·ÇËùÓÐÓ¦ÓóÌÐò¶¼ÄܺܺõØÖ§³Ö´óÒ³Ãæ£¬ÌرðÊÇÄÇЩδÕë¶Ô´óÒ³ÃæÓÅ»¯µÄ¾ÉÈí¼þ
4.Æô¶¯Ê±¼äÔö¼Ó£ºÔ¤·ÖÅä´óÁ¿´óÒ³Ãæ¿ÉÄÜ»áÔö¼ÓϵͳÆô¶¯Ê±¼ä£¬ÒòΪÐèÒªÔÚÆô¶¯Ê±Íê³ÉÄÚ´æ·ÖÅä
Îå¡¢×î¼Ñʵ¼ù½¨Òé
1.ÆÀ¹ÀÐèÇó£ºÔÚµ÷ÕûÒ³Ãæ´óС֮ǰ£¬Ê×ÏÈÆÀ¹ÀÓ¦ÓóÌÐòµÄÄÚ´æ·ÃÎÊģʽºÍÐÔÄÜÆ¿¾±£¬È·±£ÐÞ¸ÄÊÇÓÐÕë¶ÔÐÔµÄ
2.²âÊÔÑéÖ¤£ºÔÚÉú²ú»·¾³ÊµÊ©Ç°£¬Ó¦ÔÚ²âÊÔ»·¾³Öгä·Ö²âÊÔ£¬¹Û²ìÐÔÄܱ仯ºÍ×ÊԴʹÓÃÇé¿ö
3.Öð²½µ÷Õû£º´ÓС·¶Î§µ÷Õû¿ªÊ¼£¬Öð²½Ôö¼Ó´óÒ³ÃæµÄʹÓ㬱ÜÃâÒ»´ÎÐÔ´ó¹æÄ£±ä¸ü´øÀ´µÄ·çÏÕ
4.¼à¿ØÓëµ÷ÓÅ£ºÊµÊ©ºó³ÖÐø¼à¿ØÏµÍ³ÐÔÄÜ£¬¸ù¾Ý¼à¿Ø½á¹û½øÐбØÒªµÄµ÷ÓÅ
5.Îĵµ¼Ç¼£ºÏêϸ¼Ç¼Ð޸Ĺý³Ì¡¢ÅäÖòÎÊý¼°Ð§¹û£¬±ãÓÚºóÐøÎ¬»¤ºÍ¹ÊÕÏÅŲé
Áù¡¢½áÓï
LinuxϵͳϵÄÒ³Ãæ´óСµ÷ÕûÊÇÒ»ÏÔÓµ«¼«¾ß¼ÛÖµµÄ²Ù×÷£¬ËüÖ±½Ó¹ØÏµµ½ÏµÍ³µÄÐÔÄܺÍÎȶ¨ÐÔ Í¨¹ýÉîÈëÀí½âÒ³Ãæ´óСµÄ¸ÅÄî¡¢ÖØÒªÐÔÒÔ¼°Ð޸ķ½·¨£¬²¢½áºÏʵ¼ÊÓ¦Óó¡¾°½øÐн÷É÷µ÷Õû£¬¿ÉÒÔÏÔÖøÌáÉýϵͳµÄÔËÐÐЧÂÊ È»¶ø£¬ÈκÎÐ޸ͼӦ»ùÓÚ³ä·ÖµÄÆÀ¹ÀºÍ²âÊÔ£¬ÒÔÈ·±£ÔÚ×·ÇóÐÔÄÜÌáÉýµÄͬʱ£¬²»»áÎþÉüϵͳµÄÎȶ¨ÐԺͼæÈÝÐÔ Ï£Íû±¾ÎÄÄÜΪ¶ÁÕßÔÚLinuxÄÚ´æ¹ÜÀíÁìÓòÌṩÓÐÒæµÄ²Î¿¼ºÍÖ¸µ¼