[OpenStack] NUMA๋ž€ ๋ฌด์—‡์ธ๊ฐ€

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ VM์„ ํšจ์œจ์ ์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•œ ๊ณผ์ • ์ค‘ ํ•˜๋‚˜์ธ NUMA์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

NUMA๋ž€?

NUMA๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ Non-Uniform Memory Access์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ๋‹จ์–ด์˜ ๋œป์„ ์ง์—ญํ•ด๋ณด์ž๋ฉด ๋น„๋Œ€์นญ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ๋น„๋Œ€์นญ์˜ ๋œป์€ CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜์— ๋”ฐ๋ผ ์ ‘๊ทผ ์†๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ผ๋Š” ๊ฑธ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

CPU๊ฐ€ ์ž์‹ ์˜ ๊ทธ๋ฃน์— ํ• ๋‹น๋ผ์žˆ๋Š” ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ณ , ๋ณธ์ธ์—๊ฒŒ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ CPU์˜ ๋ฉ”๋ชจ๋ฆฌ(์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ)์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋น„๋Œ€์นญ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

NUMA์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

SMP

NUMA๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „์—๋Š” SMP(Symmetric Multi-Processing) ๋ผ๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

SMP(๋Œ€์นญํ˜• ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ) ์‹œ์Šคํ…œ์—์„œ๋Š” ์—ฌ๋Ÿฌ CPU๊ฐ€ ๋‹จ์ผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์Šค๋ฅผ ํ†ตํ•ด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ์—์„œ ๋ชจ๋“  CPU๋Š” ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์Šค ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฑ„๋„์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ๋ฒˆ์— ํ•œ CPU๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šค์ผ€์ผ๋ง ๋ฌธ์ œ: CPU๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๊ณ  ์ด์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์Šค์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ณ‘๋ชฉ ํ˜„์ƒ์€ CPU๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜์—ฌ ๊ฒฐ๊ตญ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์ฆ‰, CPU๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์„ฑ๋Šฅ์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๊ฒฝ์Ÿ(Race Condition)์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ์ œํ•œ: SMP ๊ตฌ์กฐ๋Š” ๋‹จ์ผ ๋ฒ„์Šค๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ‘๊ทผํ•˜๋Š”๋ฐ ์ด ๋ฒ„์Šค์— ๋Œ€์—ญํญ ์ œํ•œ์ด ๊ฑธ๋ ค์žˆ์–ด ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

NUMA๊ฐ€ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•ด์ค„๊ฒŒ!

NUMA๋Š” CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์—๊ฒŒ ๊ฐ€๊นŒ์šด(=๋ณธ์ธ์—๊ฒŒ ํ• ๋‹น๋œ) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

์ฆ‰, CPU๊ฐ€ ์ž์‹ ์—๊ฒŒ ์—ฐ๊ฒฐ๋œ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋Š๋ฆฌ๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ๋น ๋ฅด๊ฒŒ!: NUMA์—์„œ ๊ฐ CPU๋Š” ์ž์‹ ์ด ์†ํ•œ NUMA ๋…ธ๋“œ์˜ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์— ์šฐ์„ ์ ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ CPU๊ฐ€ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ ํ–ฅ์ƒ: NUMA๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์ด๊ณ  ๋งŽ์€ ์ˆ˜์˜ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด๋„ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ์ €ํ•˜๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

NUMA ๋™์ž‘ ์›๋ฆฌ

NUMA๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์‹œ๊ฐ„์„ ๋น„๋Œ€์นญ์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด CPU๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ณ , ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•„์š”ํ•  ๋•Œ๋งŒ ์ ‘๊ทผํ•˜์—ฌ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • NUMA ๋…ธ๋“œ: NUMA ์‹œ์Šคํ…œ์—์„œ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ์—๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋ฉฐ CPU๋Š” ์ž์‹ ์˜ ๋…ธ๋“œ ๋‚ด์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ: CPU๊ฐ€ ์†ํ•œ ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ, ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • NUMA ์Šค์ผ€์ค„๋ง: ์šด์˜์ฒด์ œ๋‚˜ ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์—์„œ๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฐ NUMA ๋…ธ๋“œ์— ๋งž๊ฒŒ ๋ฐฐ์น˜ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋” ๋†’์ด ์ด๋Œ์–ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VM์— NUMA ๋…ธ๋“œ์— ํ• ๋‹นํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์ „๋žต์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ •๋ฆฌํ•ด๋ณด์ž๋ฉด NUMA๋Š” SMP ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜๋กœ ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ, ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด OpenStack์—์„œ๋Š” ์–ด๋–ป๊ฒŒ NUMA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์“ฐ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ธ€์—์„œ ์ด์–ด์„œ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


๋„์›€์„ ๋ฐ›์€ ๊ธ€

https://neohtux.tistory.com/11

 

๋ฉ”๋ชจ๋ฆฌ(Memory)๊ด€๋ฆฌ-(1)

โ–ก SMP(Symmetric Multiprocessing) - ๋ณต์ˆ˜ ๊ฐœ์˜ CPU๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ์ค‘ ๋ชจ๋“  CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž…์ถœ๋ ฅ ๋ฒ„์Šค ๋“ฑ์„ ๊ณต์œ ํ•˜๋Š” ๊ตฌ์กฐ โ–ก NUMA(Non-Uniform Memory Access) - CPU๋“ค์„ ๋ช‡ ๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ

neohtux.tistory.com

https://bluemoon-1st.tistory.com/85

 

[Linux Kernel] NUMA ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•

1. NUMA๋ž€? NUMA๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•˜๋‚˜์˜ 512GB ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ CPU๊ฐ€ ์„ ์ ์œ  ๋ฐฉ์‹์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 4

bluemoon-1st.tistory.com

https://gamedoridori.tistory.com/202

 

[์ปดํ“จํ„ฐ ๊ตฌ์กฐ] SMP์™€ NUMA

๊ฐœ์š” Mutilprocessor System์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ธ SMP์™€ NUMA์— ๋Œ€ํ•ด ์„œ์ˆ ํ•œ๋‹ค. ๋จผ์ €, ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์š”์†Œ์˜ ์šฉ์–ด ์ •์˜๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. CPU : ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ํ”„๋กœ์„ธ์„œ(processor) : ํ•˜๋‚˜ ์ด์ƒ์˜

gamedoridori.tistory.com