12. 확장성의 한계: 암달의 법칙·구스타프슨 법칙과 경합

난이도 중 해설 보기 →
문제

문제 12 — 확장성의 한계: 암달의 법칙·구스타프슨 법칙과 경합

게임서버를 멀티코어로 확장할 때 "코어를 N배 늘리면 처리량도 N배"가 되지 않는 이유를 정량적으로 이해하는 문제다. 다음을 설명하라.

  1. 암달의 법칙(Amdahl's Law): 전체 작업 중 직렬(serial) 비율을 s, 병렬화 가능한 비율을 1 - s 라 할 때, 코어 N 개에서의 이론적 속도향상(speedup) 공식을 쓰고, N → ∞ 일 때의 상한을 구하라. 직렬 비율이 5%일 때 코어를 아무리 늘려도 넘을 수 없는 속도향상 상한은 얼마인가?

  2. 구스타프슨의 법칙(Gustafson's Law): 암달의 법칙과 무엇을 다르게 가정하는지(문제 크기 고정 vs 시간 고정/문제 크기 확장) 설명하고, 왜 "더 많은 코어가 주어지면 더 큰 문제를 같은 시간에 푼다"는 관점이 대규모 서버에서 더 현실적일 수 있는지 논하라.

  3. 직렬 구간의 정체: 게임서버 틱 루프에서 직렬 병목이 되기 쉬운 부분(예: 전역 락, 단일 큐, 공유 자료구조, 순차 커밋, false sharing, 동기화 지점)을 두세 가지 들고, 그것이 왜 암달의 s 를 키우는지 설명하라.

  4. 경합과 음(-)의 확장성: 코어를 늘렸는데 오히려 처리량이 떨어질 수 있는 이유(락 경합, 캐시 코히어런시 트래픽, 컨텍스트 스위칭, NUMA 원격 접근)를 설명하라. 이상적 선형 확장과 실제 곡선이 갈리는 지점을 어떻게 측정·진단하겠는가?

  5. 설계 함의: 직렬 비율을 줄이기 위한 기법(샤딩/파티셔닝으로 락 분할, 락프리/불변 스냅샷, per-core 자료구조, 배치, 작업 분할 입도 조절)을 들고, "확장 안 되는 설계"를 "확장 되는 설계"로 바꾸는 사고 과정을 정리하라.

답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.