안녕하세요.
CentOS7 KVM으로 구성된 Guest OS의 CPU 사용률 증가로 문의드립니다.
서버의 구성은
Host : 128G Mem, 480G SSD * 2 (Raid 1), 480G SSD * 6 (Raid 5) 구성입니다.
Guest : Host의 딱 반씩 사용하고 있습니다.
OS 는 Raid1 에 설치, Raid5 에는 Data 영역으로 사용중입니다.
Swap 설정은 Host, Guest 각각 32G 입니다.
이때 Host의 Swap이 free 가 0 일 경우 Guest의 성능저하가 발생합니다. 이때 Host의 물리메모리는 여유가 있었고 swappiness=60 으로 설정되어 있습니다.
위와 같은 현상은 파악하여 Swap을 64G로 올려주니 동일 발생하지는 않았습니다. (물론 swappiness를 줄여주면 해결될지도 모르겠습니다)
그러나 왜 성능저하가 발생했는지를 모르겠습니다. 알고싶어요,.,.
혹시라도 이유를 알고 계신분이 계시면 도움 부탁드립니다.
감사합니다.
ÀÚ¼¼ÇÑ ¼³¸íÀº SWAP ¸Þ¸ð¸® °Ë»öÇÏ½Ã¸é ¸¹ÀºÀÚ·áµéÀÌ ÀÖÀ¸´Ï Âü°í ÇÏ½Ã¸é µÉ °Í °°½À´Ï´Ù.
https://mozi.tistory.com/424
GuestÀÇ swap°ú ¸Þ¸ð¸®´Â ÃæºÐÈ÷ ¿©À¯°¡ ÀÖ´Â »óÅÂÀε¥µµ ºÒ±¸ÇÏ°í
Guest°¡ Host swapÀÇ ¿µÇâÀ» ¹Þ¾Æ¼ ±Ã±ÝÇÕ´Ï´Ù.
guest 64G * 2vm À̶ó°í Çϸé
host ¿¡¼ OS°¡ Á¡À¯ÇÏ°í ÆÄÀÏ Ä³½Ì µîÀ¸·Î ÀÎÇؼ ½ÇÁ¦ guest¿¡ ÇÒ´ç °¡´ÉÇÑ ¸Þ¸ð¸®´Â ¸¹¾Æ¾ß 60G Á¤µµ µÇÁö ¾ÊÀ»±î »ý°¢µË´Ï´Ù.
¾Æ¹«Æ° host ¿¡¼´Â ÀÚ±â ÀÚ½ÅÀÌ ½á¾ß ÇÒ ¸Þ¸ð¸® + guest ¿¡¼ ¿¹¾àÇÒ ¸Þ¸ð¸® Çϸé
¹°¸® ¸Þ¸ð¸® º¸´Ù ¸¹Àº ¸Þ¸ð¸®¸¦ »ç¿ëÇØ¾ß Çϱ⠶§¹®¿¡ ÇÊ¿¬ÀûÀ¸·Î ½º¿ÒÀÌ ¹ß»ýÇÏ°Ô µÇ°í
±×·Î ÀÎÇØ ¼º´É ÀúÇÏ°¡ »ý±æ °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
swapÀ¸·Î À̵¿µÇ´Â ¸Þ¸ð¸® ¿µ¿ªÀº Inactive(Anon)ÀÔ´Ï´Ù. file systemÀÇ cache¸¦ Á¦¿ÜÇÑ ÇÁ·Î¼¼½ºÀÇ ÃÖ±Ù ÂüÁ¶µÇÁö ¾ÊÀº ¸Þ¸ð¸®°¡ ÀϹÝÀûÀ¸·Î Inactive(Anon)ÀÌ°í, qemu ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¶ÇÇÑ ÀÌ ´ë»óÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
»ç¼öÁö¸ù ´Ô ¸»¾¸´ë·Î swap free ¿ë·®ÀÌ 0ÀÌ µÇ¸é, kernelÀÌ ¸Þ¸ð¸® ÇÒ´ç ¿äûÀ» ¹Þ°Ô µÇ¸é ¸Þ¸ð¸® ÇÒ´ç ¿äûÀ» °ÅºÎÇÒ ¼ö ¾ø±â¿¡ memory free, cache ¶Ç´Â swapÀ» °Ë»öÇÑ µÚ trade off¸¦ °ÅÃÄ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°Ô µË´Ï´Ù. OSÀÇ ´ëºÎºÐÀÇ µ¿ÀÛÀº ¸Þ¸ð¸® ÇÒ´ç°ú I/O ó¸®Àε¥, I/O 󸮿¡ ½Ã°£ÀÌ ¸¹ÀÌ °É¸®¹Ç·Î °¡±ÞÀû ¸Þ¸ð¸®¿¡¼ ¸ðµç °ÍÀ» ó¸®ÇÏ·Á°í ÇÕ´Ï´Ù. ½Ã½ºÅÛÀÇ ¼Óµµ ¶ÇÇÑ ¸Þ¸ð¸® º¹»ç ¼Óµµ°¡ ´ëº¯ÇÑ´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·±µ¥ swap free±îÁö ¸ðµç ¸Þ¸ð¸®¸¦ ´Ù »ç¿ëÇÏ¿´´Ù°í ÇÑ´Ù¸é, cache±îÁö ¼ÒÁøÇϱâ À§ÇØ flush¸¦ ½ÃµµÇÒ °ÍÀÌ°í, ¸¸¾à flushÇÒ cache±îÁö ´Ù ¼ÒÁøÇÏ¿´´Ù¸é file systemÀº diskÀÇ read¿Í ¸Þ¸ð¸® ¿äûÀ», KVM°ú ±âŸ ÇÁ·Î¼¼½ºµéÀº ¸Þ¸ð¸® ÇÒ´ç ¿äûÀ» kernel·Î ÇÏ°Ô µË´Ï´Ù. I/OÀÇ ¼Óµµ´Â ¸Þ¸ð¸®º¸´Ù ¸Å¿ì ´À¸®¸ç, I/O´Â blockingÀ» ÇÒ È®·üÀÌ ³ô¾ÆÁö¹Ç·Î ¸¸¾à ÀÌ·± »óȲÀÌ µÇ¸é ½Ã½ºÅÛÀÇ Ã³¸® ¼Óµµ´Â disk I/O ¼Óµµ¿¡ °ÅÀÇ ¹ÌÄ¡°Ô µË´Ï´Ù. ÀÌ·± Çö»óÀÌ °è¼ÓµÇ¸é¼ Á¤¸» ÇÒ´çÇÒ ¸Þ¸ð¸®°¡ ´õ ÀÌ»ó Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì kernelÀº ½Ã OOMÀ» ½ÃµµÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ »ç¼öÁö¸ù ´Ô ½Ã½ºÅÛÀº ±× Á¤µµ±îÁö °£ °Í °°Áö´Â ¾Ê½À´Ï´Ù. ¾ÆÁ÷ cache ¸Þ¸ð¸®°¡ ³²¾Æ ÀÖ¾î¼ ±×·± °ÍÀÏÁöµµ ¸ð¸£°Ú½À´Ï´Ù.
Àû¾îµµ VMÀÇ ¼º´É ÀúÇϸ¦ ¸·°í ½Í´Ù¸é VMÀ» À§ÇØ hugepage·Î °Á¦ ÇÒ´çÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù. VM ½ÇÇà ½Ã ¸Þ¸ð¸®°¡ ÇÒ´çµÇ´Â °ÍÀÌ ¾Æ´Ï³Ä°í ¹Ý¹®ÇÏ½Ç ¼ö ÀÖÀ¸³ª, ¸Þ¸ð¸®°¡ ÇÒ´çµÇ´Â °ÍÀº °¡»ó ¸Þ¸ð¸®ÀÌÁö ½ÇÁ¦ ¹°¸® ¸Þ¸ð¸®°¡ ¾Æ´Õ´Ï´Ù. mappingÀÌ ÀϾÁöµµ ¾Ê¾Ò°í, qemu ¶ÇÇÑ ÇÁ·Î¼¼½ºÀ̱⠶§¹®¿¡ swap ´ë»óÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. VMÀÌ »ç¿ëÇÏ´Â ¸Þ¸ð¸®°¡ swapÀÌ µÈ´Ù¸é ¾È ±×·¡µµ VM kernel¿¡¼ mappingÀ» ó¸®Çϱâ À§ÇØ ´Ù¼öÀÇ stepÀÌ °É¸®´Â °ÍÀ» swap page-inÀ¸·Î ÀÎÇØ I/O ¼Óµµ¸¸ÅÀ̳ª ±â´Ù·Á¾ß ÇÒ °ÍÀÔ´Ï´Ù. VMÀÌ »ç¿ëÇÏÁö ¾ÊÀº ¸Þ¸ð¸® °ø°£ÀÌ ¾Æ½¬¿ïÁö ¸ð¸£°ÚÁö¸¸ Àû¾îµµ VMÀº º°µµÀÇ °ø°£¿¡¼ Á¤»óÀûÀ¸·Î µ¿ÀÛÇϱâ À§Çؼ´Â hugepage·Î ¸Þ¸ð¸® ¿µ¿ªÀ» È®º¸ÇØ Áֽô °ÍÀÌ ÁÁ½À´Ï´Ù.
Ãß°¡ÀûÀ¸·Î swapÀÇ ¿¹¹æÀ» À§ÇØ min_free_kbytes °ªÀ» ´Ã·ÁÁֽðí, vfs_cache_pressure °ªÀ» 100 ÀÌ»ó ´Ã·Á cacheÀÇ flush¸¦ Á» ´õ À¯µµÇØ Áֽñ⠹ٶø´Ï´Ù. ½Ã½ºÅÛ¿¡¼ swap »ç¿ëÀº ¸Þ¸ð¸® ¾Ð¹ÚÀ¸·Î ¹Û¿¡ º¼ ¼ö ¾ø½À´Ï´Ù. swap »ç¿ëÀ¸·Î ¼º´É ÀúÇÏ°¡ ¹ß»ýÇÑ´Ù¸é ±× ½Ã½ºÅÛÀº Áö¼ÓÀûÀÎ swap »ç¿ë¿¡ ¿µÇâ¹ÞÀ» ¼ö¹Û¿¡ ¾øÀ» °ÍÀÔ´Ï´Ù. ¸¸¾à, ÀÌ·¸°Ô Á¶Á¤ ÈÄ¿¡µµ swap »ç¿ëÀÌ ÀÖÀ» °æ¿ì ¸Þ¸ð¸® È®ÀåÀ» ±ÇÇص帳´Ï´Ù.
ÀÌ ±Û º¸°í ¹Ù·Î hugepages ¸¦ »ç¿ëÅä·Ï º¯°æÇß½À´Ï´Ù.
ÆäÀÌÁö »çÀÌÁî´Â 2M°¡ ÁÁÀ»±î¿ä? 1G°¡ ÁÁÀ»±î¿ä?
ÀÏ´Ü THP¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. 2M ºí·°À¸·Î...
AnonHugepages °¡ Áõ°¡Çϴ°ŷΠºÁ¼± VM ÇÒ´ç½Ã
Àß Àû¿ëµÇ´Â°ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
1G ºí·°À¸·Î »ç¿ëÇϸé ij½Ã ¹Ì½º, ¸Þ¸ð¸® ´©¼ö µîÀÇ
¹®Á¦¿Í ºÎÀûÀýÇÑ »óȲ¿¡¼ ¿À¹öÇìµå°¡ Áõ°¡ÇÒ ¼ö Àֱ⿡
ÀÏ´ÜÀº ÀÌ·¸°Ô »ç¿ëÁßÀÔ´Ï´Ù.
VM¿¡ º¸Åë GiB ´ÜÀ§·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇϹǷΠ1 GiB ´ÜÀ§ »ç¿ëÀÌ ¹®Á¦ µÉ °Í °°Áö´Â ¾ÊÀ¸³ª, »ç¿ë»ó 2 MiB ´ÜÀ§°¡ À¯¿ëÇÏ½Ã´Ù¸é ¾î´À ÂÊÀ» »ç¿ëÇÏ½Ãµç °ü°è´Â ¾ø½À´Ï´Ù.
kswapd µ¿ÀÛÀ¸·Î ÀÎÇØ swap »ç¿ëÀÌ ´Ã¾î³ª°í ÀÖ´Ù¸é ¸Þ¸ð¸® ¾Ð¹ÚÀ¸·Î º¸½Ã¸é µÇ°Ú½À´Ï´Ù.
¸Þ¸ð¸® ¾Ð¹ÚÀÇ ¿øÀÎÀº ´Ù¾çÇϳª, free page list¿Í cacheÀÇ »ó°ü°ü°è¸¦ ÀÌÇØÇÏ°í °è½Å´Ù¸é ¾î´À ºÎºÐ¿¡¼ ¾Ð¹ÚÀ» À¯¹ßÇÏ°í ÀÖ´ÂÁö ÆľÇÇÏ½Ç °Å¶ó »ý°¢ÇÕ´Ï´Ù.
Ȥ½Ã sys »ç¿ë·ü°ú ÇÔ²² ldavg °ªÀÌ »ó½ÂÇÑ´Ù¸é cache flush¸¦ À§ÇÑ scanÀÌ È°¹ßÇØ Áö´Â °ÍÀÌ´Ï free page È®º¸¸¦ À§ÇÑ min_free_kbytes °ªÀÌ ÀûÀýÇÑÁö °ËÅäÇØ º¸½Ã±æ ¹Ù¶ø´Ï´Ù.
kernel ¹öÀü¿¡ µû¶ó swap »ç¿ë¿¡ ´ëÇÑ °üÁ¡ÀÌ ´Þ¶óÁö¸ç, cgroup »ç¿ë À¯¹«¿¡ µû¶ó¼µµ swap À̽´ ¹ß»ýÀÌ ÀÖÀ» ¼ö ÀÖÀ¸´Ï °¡±ÞÀû ÃֽŠ¹öÀüÀ¸·Î ¾÷µ¥ÀÌÆ®ÇϽðí changelogÀÇ
³»¿ëÀ» È®ÀÎÇÑ µÚ sysctl Ç׸ñÀ» ¼³Á¤ÇϽñ⠹ٶø´Ï´Ù.
»ç¿ëµÇ´Â°Å·Î ºÁ¼± ½º¿Ò ¿µ¿ªÀÌ »ç¿ëÁßÀ¸·Î º¸À̴µ¥
¿Ö ±×·±Áö ±âº»ÀûÀÎ ÀÌÇØ´Â ÇÏ°íÀÖÁö¸¸ Ä¿³Î ¼³Á¤¿¡ ºñÇØ
³Ê¹« °úÇÑ »ç¿ëÀÌ µÇ´Â°Å·Î º¸À̱⿡ Á¦°¡ ³õÄ¡´Â ºÎºÐÀÌ
ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.