자주 생각하는겁니다만...
시스템이 쿼드 코어 인데
서로다른 4가지의 프로그램이 싱글코어만 사용한다하면
동시에 4개의 프로그램을 돌리고있어도 코어별로 프로그램이 할당되서 돌아가는게아니라
한코어만 계속 굴리는 이유가 무엇인가요?
그리고...
16코어 시스템이 있다고하고
가상화로 4개의 VM에 코어 4개씩 할당하면
그거는 왜 4개의코어를 서로 나눠서 쓰는게 아니라
16개의 코어를 전부 사용하는건가요?
순간 이것저것 생각나서 질문해봅나다...
자주 생각하는겁니다만...
시스템이 쿼드 코어 인데
서로다른 4가지의 프로그램이 싱글코어만 사용한다하면
동시에 4개의 프로그램을 돌리고있어도 코어별로 프로그램이 할당되서 돌아가는게아니라
한코어만 계속 굴리는 이유가 무엇인가요?
그리고...
16코어 시스템이 있다고하고
가상화로 4개의 VM에 코어 4개씩 할당하면
그거는 왜 4개의코어를 서로 나눠서 쓰는게 아니라
16개의 코어를 전부 사용하는건가요?
순간 이것저것 생각나서 질문해봅나다...
Ŭ·°ÀÌ À¯µ¿ÀûÀ¸·Î Àç¾îµÇ¸é¼ ÄÚ¾î Çϳª¿¡ ¸ô»§ÇÏ¸é ´õ ¸¹ÀÌ ¿Ã¶ó°¡´Â ¿äÁò CPUÀÇ Æ¯¼º»ó. ·¹ÀÌÅϽÿ¡ ¸ñ¼ûÀ» °Å´Â ÀÛ¾÷ÀÌ ¾Æ´ÑÀÌ»ó ±×·¸°Ô ÇÏ´Â°Ô ÀÌÀÍÀÌ µÉ°Í °°Àºµ¥¿ä..
¹º°¡ Á¦°¡ À߸øÀÌÇØÇÏ°í Àִ°Š°°½À´Ï´Ù...
½ÇÁ¦·Î´Â ´Ù¸¥ ¹æ½ÄÀ¸·Î ¸ÖƼÄÚ¾îµéÀÌ ÇÒ´çµÇ°íÀִµíÇѱâºÐÀÌ...
ÇÁ·Î¼¼½º¿¡ ¸í½ÃÀûÀ¸·Î CPU affinity¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é.. OS°¡ ÇÁ·Î¼¼½º¸¦ À̸®Àú¸® À̵¿½ÃÄÑ°¡¸ç ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Î¼¼½º°¡ migrationµÇ´Â ÀÌÀ¯´Â ¿©·¯°¡Áö°¡ ÀÖÀ» ¼ö ÀÖ°ÚÁö¸¸, ¾î·µç ÇÑ ÇÁ·Î±×·¥ÀÌ Æ¯Á¤ CPU¿¡¼¸¸ ½ÇÇàµÈ´Ù°í °¡Á¤ÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
xp¶ó¸é º»·¡ ±×·¸°Ô µ¿ÀÛÇÕ´Ï´Ù.
ÇÏÀÌÆÛ½º·¹µù¿¡ Á»´õ È¿À²ÀûÀ¸·Î ´ëÀÀÇϵµ·Ï ¼³°èµÇ¾ú±â ¶§¹®ÀÌÁÒ.
¹®Á¦´Â ÀÌ°Ô ½ÇÁ¦ Äھ ¿©·¯°³ÀÏ ¶§¸¦ °í·Á¸¦ ÀüÇô ¾ÈÇÑ ÇüÅÂÀÎÁö¶ó....
¸ÖƼÄھ ´ëÀÀÇϵµ·Ï ¼³°èµÈ ¿î¿µÃ¼Á¦´Â ¿î¿µÃ¼Á¦ ¸¾ÀÔ´Ï´Ù.
Çϳª¿¡ ¸ô¾ÆÁÖ´Â°Ô ´õ È¿À²ÀûÀÌ¸é ¸ô¾Æ¹ö¸®°í ±×·¸Áö ¾ÊÀ¸¸é ºÐ¹èÇÏ°í....
Windows °è¿Àº »ç¿ëÀÚ°¡ °¢ ÇÁ·Î¼¼¼ ´ç ¼±È£ CPU(Thread)¸¦ Á÷Á¢ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¾ÈÇÏ¸é ¿î¿µÃ¼Á¦°¡ ÀÚü ÆÇ´Ü¿¡ µû¶ó ¿©±âÀú±â ¿Å±é´Ï´Ù.
(ÀÌ ¶§ ¿î¿µÃ¼Á¦ÀÇ Àü·Â°ü¸®¼³Á¤ÀÌ ²Ï³ª Áß¿äÇÑ °áÁ¤¿ä¼Ò¶ó´õ±º¿ä)
VM ÄÚ¾î ÇÒ´ç¹®Á¦´Â NUMA°¡ ¾î¶»°Ô ±¸¼ºµÈ ½Ã½ºÅÛÀΰ¡¿¡ ´Ù¸£°í, VM NUMA ±¸¼ºÇüÅ¿¡ µû¶ó °øÀ¯Çϱ⵵ ÇÏ°í ºÐ¹èÇϱ⵵ ÇÕ´Ï´Ù.
http://frankdenneman.nl/2010/02/03/sizing-vms-and-numa-nodes/
À̰͵µ ³í¸®Àû NUMA·Î ±¸¼ºÇҰųÄ... Çϵå¿þ¾îÀûÀÎ NUMA±¸¼ºÀ» ±×´ë·Î ÀÌ¿ëÇҰųĿ¡ µû¶ó ´Þ¶óÁý´Ï´Ù.
ÈÄÀÚÀÇ °æ¿ì VM¿¡ ¿©·¯ vCPU¸¦ ÇÒ´ç ÇÒ °æ¿ì, ½Ã½ºÅÛ Çϵå¿þ¾î ÇüŸ¦ ±×´ë·Î vCPU¿¡ Àû¿ëÇÕ´Ï´Ù.
(ÀÌ°É Non-NUMA¶ó°í ÇÏ´õ±º¿ä... NUMA = CPU + Memory·Î ÀÌ·ç¾îÁø ³ëµå¸¦ ¸»ÇÏ´Â °Çµ¥, Çϵå¿þ¾îÀûÀ¸·Î ±¸¼ºµÈ NUMA´Â °¡»óÈ¿¡¼ NUMA¶ó°í ÇÏÁö ¾Ê³ª º¾´Ï´Ù.)
NUMAÀÇ ¿¹: 2way ½Ã½ºÅÛÀÌ ±¸¼ºµÇ¾úÀ» ¶§ Memory Controller 0, 1 Àº CPU_0¿¡ Memory Controller 2, 3 Àº CPU_1¿¡¼ ´ã´çÇÑ´Ù°í º¾½Ã´Ù.
ÀÌ·¯¸é CPU_1¿¡¼ Memory Controller 0 ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®·Î Á¢±ÙÇÏ·Á¸é QPI µîÀ» ÅëÇؼ CPU_0À» °Åó °¡¾ßÇÕ´Ï´Ù.
ÀÌ·± ¹°¸®Àû °Å¸®¸¦ ¹¦µâÈ Çϸé Memory Channel 0, 1°ú CPU_0Àº NUMA Node 0 ÀÌ¶ó º¼ ¼ö ÀÖ°í,
Memory Channel 2, 3°ú CPU_1Àº NUMA Node 1 ÀÌ¶ó º¼ ¼ö ÀÖ½À´Ï´Ù.
¸¸¾à vCPU¸¦ 2°³ ÇÒ´çÇÒ ¶§ Çϵå¿þ¾î ÅäÆú·ÎÁö¸¦ »ç¿ëÇÏ°íÀÚ ÁöÁ¤Çϸé È£½ºÆ®´Â °¢ vCPU¸¦ ´Ù¸¥ NUMA Node¿¡ ÇÒ´çÇÏ·Á°í ÇÒ °ÍÀÔ´Ï´Ù.
Áï À§¿¡ ¿¹½Ã·Î µç Çϵå¿þ¾î ȯ°æ¿¡¼´Â ½ÇÁ¦·Î ¼·Î ´Ù¸¥ CPU µÎ°³¸¦ Á¡À¯ÇÑ VMÀÌ »ý¼ºµË´Ï´Ù.
¸¸¾à ÇϳªÀÇ CPU¸¸ ÀÖ°í ÀÌ CPU°¡ µÎ°³ÀÇ ¸Þ¸ð¸®ÄÁÆ®·Ñ·¯°¡ ÀÖÀ» ¶§, CPU¾ÈÀÇ Äھ¸® Memory ChannelÀ» Á÷Á¢ °øÀ¯ÇÏÁö ¾Ê´Â´Ù¸é, CPU Çϳª¸¸ ³õ°í º»´Ù¸é ¿ª½Ã NUMA Node µÎ°³·Î ³ª´¶´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù. Á»´õ È®ÀåÇϸé PCIe, DMI ·¹Àεµ CPU³¢¸® ¼·Î Á÷Á¢ °øÀ¯ÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ ¿ª½Ã NUMA Boundary·Î ³ª´ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ°Ç PCIe Passthrough ÇÒ ¶§ ¼º´É¿¡ ¿µÇâÀ» ÁÖ´Â ¿ä¼Ò°¡ µË´Ï´Ù)
Á¦°¡ º¼ ¶§ ¸»¾¸ÇϽŠHypervisor°¡ ¹ºÁö ¸ð¸£°ÚÁö¸¸ ÃÖ´ëÇÑ NUMA nodeµéÀ» ºÐ»ê½ÃÄѼ ÇÒ´çÇϵµ·Ï ¼³Á¤ÀÌ µÈ°Å °°½À´Ï´Ù.
Á¦°¡ À߸ô¶ó¼
Áú¹®Á¶Â÷µµ ¿Ã¹Ù¸£Áö ¾Ê¾Ò´ø°Å °°½À´Ï´Ù.
²Ï¸¹Àº ±Ã±ÝÁõÀÌ ÇؼҵǾú½À´Ï´Ù.
¾à°£ ¿À·¡µÈ ±ÛÀÌÁö¸¸ ESXi¿¡¼ÀÇ CPU ½ºÄÉÁ층/NUMA ±¸¼º¿¡ ´ëÇØ ÀÌÇØÇϱ⿡´Â ºÎÁ·ÇÔÀÌ ¾ø´Â ±ÛÀÔ´Ï´Ù.(Ä«Æä È«º¸ ¾Æ´Õ´Ï´Ù ^^)
'VM¿¡°Ô ÀÌÀ¯ ¾øÀÌ vCPU¸¦ 2°³ ÀÌ»ó ÇÒ´çÇؼ´Â ¾ÈµÇ´Â ÀÌÀ¯'¶ó°í °Ë»öÇغÁµµ ³ª¿É´Ï´Ù.
°Ë»öâ¿¡¼ ¹Ù·Î ¿¶÷ÀÌ ¾È µÇ´Â°¡¿ä?