#distributed systems
#caching
#redis
#scalability
#architecture
์ด๋น ์๋ฐฑ๋ง ๊ฑด์ ์์ฒญ(RPS)์ ์ฒ๋ฆฌํ๋ ์์คํ
์์ Redis ํด๋ฌ์คํฐ์ ๋ก์ปฌ ์บ์๋ฅผ ๊ฒฐํฉํ ๋ฉํฐ ๋ ๋ฒจ ์บ์ฑ ์ํคํ
์ฒ๋ฅผ ์ค๊ณํ๊ณ , ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์บ์ ์คํฌํผ๋(Cache Stampede) ํ์์ ๋ฐฉ์งํ๋ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ํ์ญ์์ค.
๋๊ท๋ชจ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ์ํ ์กฐํ ์๋น์ค๋ฅผ ์ค๊ณ ์ค์
๋๋ค. ์ํ ์ ๋ณด๋ ๊ฐฑ์ ์ด ๋น๋ฒํ์ง ์์ผ๋ ์กฐํ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋ ์ด๋ฒคํธ ์๊ฐ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๋ฅผ ๊ฒฌ๋๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ก์ปฌ ์บ์(Caffeine)์ ๋ถ์ฐ ์บ์(Redis Cluster)๋ฅผ ํ์ฉํ ๋ฉํฐ ๋ ๋ฒจ ์บ์ฑ ์ ๋ต์ ์๋ฆฝํด์ผ ํฉ๋๋ค. ๋ค์ ์ธ ๊ฐ์ง ์ธก๋ฉด์ ๋ํด ๊ตฌ์ฒด์ ์ธ ์ต์ ํ ๋ฐฉ์์ ์์ ํ์ญ์์ค.
1. **Look-aside vs Write-through ํจํด ์ ํ**: ๋์ ๋์์ฑ ์ํฉ์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ์ง์ฐ ์๊ฐ์ ์ต์ํํ ์ ์๋ ์บ์ ์ ๋ต์ ๋ฌด์์ด๋ฉฐ, ๊ทธ ์ด์ ๋ ๋ฌด์์
๋๊น?
2. **์บ์ ์คํฌํผ๋ ๋ฐฉ์ง**: ํน์ ์ธ๊ธฐ ์ํ์ ์บ์๊ฐ ๋ง๋ฃ๋์์ ๋, ์๋ง ๊ฐ์ ์์ฒญ์ด ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ชฐ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฝ(Lock) ๋น๊ต ์๊ณ ๋ฆฌ์ฆ ๋์ ํ๋ฅ ์ ๊ฐฑ์ (Probabilistic Early Expiration) ๊ธฐ๋ฒ์ ์ค๊ณํ์ญ์์ค.
3. **๋ถ์ฐ ์บ์ ํํฐ์
๋ ๋ฐ ์ฅ์ ์กฐ์น**: Redis Cluster์ Slot ๋ถ๋ฐฐ๋ฅผ ์ต์ ํํ์ฌ ํซ์คํ(Hotspot) ํค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ํน์ ์ค๋ ์ฅ์ ์์ ์๋ ์ฅ์ ์กฐ์น(Failover) ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์บ์ ๋๋ฝ(Cache Miss) ํญ์ฆ์ ์ํํ๋ ๋ฐฉ์์ ์ ์ํ์ญ์์ค.
#cuda
#gpu computing
#memory optimization
#parallel computing
#hpc
CUDA ํ๊ฒฝ์์ ๋๊ท๋ชจ ํ๋ ฌ ์ฐ์ฐ์ ์ํํ ๋, ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ํจํด์ ์ต์ ํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ ๋ณ๋ชฉ ํ์์ ํด์ํ๊ณ ์ํ(Warp) ๋ด์ ๋ฉ๋ชจ๋ฆฌ ํธ๋์ญ์
์๋ฅผ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ๋ถ์ํ์ญ์์ค.
NVIDIA GPU ์ํคํ
์ฒ(์: Ampere ๋๋ Hopper)๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ ํ๋ ฌ-๋ฐ์ง ํ๋ ฌ ๊ณฑ์
(SpMM) ์ฐ์ฐ์ ์ต์ ํํ๋ ค๊ณ ํฉ๋๋ค. ํ์ฌ ๊ตฌํ๋ ์ปค๋์ ์ฑ๋ฅ ํ๋กํ์ผ๋ง ๊ฒฐ๊ณผ, ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ๋ก๋/์คํ ์ด ๋ช
๋ น์ด์ ์คํ ์๊ฐ์ด ์ ์ฒด ์คํ ์๊ฐ์ 70% ์ด์์ ์ฐจ์งํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์์ต๋๋ค. ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ฌ ์ปค๋ ์ฝ๋๋ฅผ ์ต์ ํํ๋ ์ ๋ต์ ์ ์ํ์ญ์์ค.
1. **Coalesced Access ๊ตฌํ**: ๋ถ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ ํฌ์ ํ๋ ฌ์ ์์์ ์ ๊ทผํ ๋, ์ฐ๋ ๋ ๋ธ๋ก๊ณผ ์ํ์ ์ค๋ ๋ ๋ฐฐ์น๋ฅผ ์ฌ์กฐ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค๋ฅผ ๋ณํฉ(Coalescing)ํ๋ ๋ฐฉ๋ฒ์ ์ค๊ณํ์ญ์์ค.
2. **Shared Memory ํ์ฉ**: ์์ฃผ ์ฐธ์กฐ๋๋ ๋ฐ์ดํฐ๋ฅผ Shared Memory์ ๋ก๋ํ์ฌ ๊ธ๋ก๋ฒ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ด๋ Tiling ๊ธฐ๋ฒ์ ์ ์ฉํ๊ณ , Shared Memory ๋ฑ
ํฌ ์ถฉ๋(Bank Conflict)์ ํผํ๋ ์ธ๋ฑ์ฑ ๋ฐฉ์์ ์ ์ํ์ญ์์ค.
3. **๋ฒกํฐํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ก๋**: `float4` ๋๋ `ldg` ๋ช
๋ น์ด์ ๊ฐ์ ๋ฒกํฐํ๋ ๋ก๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ช
๋ น์ด ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ๋์ญํญ ํจ์จ์ ๊ทน๋ํํ๋ ๋ฐฉ๋ฒ์ ๋น๊ต ๋ถ์ํ์ญ์์ค.
#python
#data
#refactoring
๋ฒกํฐํ ์ฐ์ฐ์ ํตํด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์
๋๋ค.
์ค์ฒฉ๋ for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ฉ๋ ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ์กด Python ์ฝ๋๋ฅผ Pandas์ ๋ฒกํฐํ ์ฐ์ฐ์ด๋ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
(List Comprehension)์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์คํ ์๋๋ฅผ ํฅ์์ํค์ญ์์ค.
#์คํ ๋ฆฌํ
๋ง
#๋ ๋ฒจ ๋์์ธ
#๋ชฐ์
๊ฐ
๋์ฌ ์์ด ํ๊ฒฝ๊ณผ ๋ฐฐ๊ฒฝ์ ํตํด ์์ฌ๋ฅผ ์ ๋ฌํ๋ ๊ณ ๊ธ ์คํ ๋ฆฌํ
๋ง ๊ธฐ๋ฒ์ ์ฐ๊ตฌํฉ๋๋ค.
ํ
์คํธ๋ ์์ฑ ๋ํ๋ฅผ ์ ํ ์ฌ์ฉํ์ง ์๊ณ ์ค์ง ํ๊ฒฝ(Environmental Storytelling)๋ง์ผ๋ก ๊ณผ๊ฑฐ์ ์ผ์ด๋ ์ฐธ์ฌ์ ์ง์ค์ ํ๋ ์ด์ด์๊ฒ ์ ๋ฌํ๋ 3D ๋ ๋ฒจ ๋์์ธ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ์ญ์์ค. ์กฐ๋ช
, ์์ดํ
๋ฐฐ์น, ๊ฑด์ถ ์์์ ๋ณํ, ๊ทธ๋ฆฌ๊ณ ๋ฐฐ๊ฒฝ ์ฌ์ด๋๋ฅผ ํ์ฉํ์ฌ ์๊ฐ์ ํ๋ฆ๊ณผ ์ฌ๊ฑด์ ๋ฐ๋ฌ ๊ณผ์ ์ ์์ํ๋ ๊ตฌ์ฒด์ ์ธ ์์๋ฅผ 5๊ฐ์ง ์ด์ ํฌํจํ์ฌ ์ค๋ช
ํ์ญ์์ค.
#e์คํฌ์ธ
#์ ๋ต
#๋ถ์
MOBA๋ RTS ๊ฒ์์์์ ๊ณ ๊ธ ์ ๋ต์ ์ฌ๊ณ ์ ๋งต ๋ฆฌ๋ฉ ๋ฅ๋ ฅ์ ํ๊ฐํฉ๋๋ค.
ํน์ MOBA ๊ฒ์์ ๋์์ผ๋ก, '๊ฒฝํ์น ๋ฐ ๊ณจ๋ ์์ต์ ์ต์ ํ๋ฅผ ์ํ ๋งต ๋ฆฌ๋ฉ(Map Reading)' ๋ฐฉ์์ ๋ํด ์ฌ๋ ์๋ ๋ถ์๊ธ์ ์์ฑํ์ญ์์ค. ์ด๋ฐ ๋ผ์ธ์ ๋จ๊ณ์์ ์ ๊ธ๋ฌ์ ๊ฐฑํน ๋ฃจํธ๋ฅผ ์์ธกํ๋ ๋ฐฉ๋ฒ, ์ค๋ธ์ ํธ(๋๋๊ณค/๋ฐ๋ก ๋ฑ) ์ธ์ ์ ์ ์ค์(Swap) ์ ๋ต, ๊ทธ๋ฆฌ๊ณ ์๋์ ์์ผ๋ฅผ ๊ต๋ํ์ฌ ๊ฒฝ์ ์ ์ฐ์๋ฅผ ์ ํ๋ '๊ฑฐ์์ ์ด์(Macro Management)'์ ํต์ฌ ์๋ฆฌ๋ฅผ ๋จ๊ณ๋ณ๋ก ์์ ํ์ญ์์ค.
#์ฐฝ์
#์์ด๋์ด ๋ฐ์
#์์ฅ ๋ถ์
๋น์ ์ ๊ด์ฌ์ฌ์ ์ ๋ฌธ์ฑ์ ๊ฒฐํฉํ์ฌ ์์ต์ฑ ์๋ ๋น์ฆ๋์ค ์์ด๋์ด๋ฅผ ๋ฐ๊ฒฌํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๋น์ ์ด ํ์ ํฅ๋ฏธ๋ฅผ ๋๋ผ๋ ์ฃผ์ 3๊ฐ์ง๋ฅผ ๋์ดํด ๋ณด์ธ์. ๊ฐ ์ฃผ์ ์ ๋ํด ์ฌ๋๋ค์ด ๊ฒช๋ ํํ ๋ฌธ์ ์ ํ๋์ฉ ์ฐพ์๋ณด๊ณ , ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ฐฝ์
์์ด๋์ด๋ฅผ ํ๋์ฉ ์ ์ํด ์ฃผ์ธ์. ์ด ์์ด๋์ด๊ฐ ๊ธฐ์กด ์์ฅ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๊ฐ๋จํ ์ค๋ช
ํด ๋ณด์ธ์.