도구스개발

보편 확장성 법칙(USL) 계산기

직렬화 계수 α와 일관성 계수 β로 병렬도 N에서의 상대 처리량 C(N) = N/(1+α(N−1)+βN(N−1))을 계산합니다. 노드를 더 넣으면 오히려 느려지는 정점 N* = √((1−α)/β)까지 함께 찾아 줍니다.

어차피 한 번에 하나씩 해야 하는 부분의 비율입니다. 0.05면 5%입니다

서로 상태를 맞추느라 드는 비용입니다. 0이면 암달의 법칙과 같아집니다

코어 수·노드 수·동시 사용자 수처럼 늘리려는 것의 개수입니다

건/초

상대값에 곱해 실제 처리량으로 보여 줍니다

N = 16 일 때의 처리량

5,423.7건/초

하나일 때의 5.424배 · 효율 33.9% · 정점은 N = 13.78 부근입니다

상대 처리량 C(N)5.4237
효율 C(N)/N33.9%
정점 N* = √((1−α)/β)13.78개
정수 N 중 가장 좋은 값14개 → 5.469배
N → ∞ 의 극한0 (0으로 무너짐)
β를 0으로 두면 (암달)9.1429
더 넣으면 오히려 느려지는 지점이 있습니다. βN(N−1) 항은 N²으로 늘어나기 때문에 결국 분자의 N을 이깁니다. 지금 설정의 정점은 N = 13.78이고 정수로는 14개에서 5.469배가 최대입니다. 그보다 더 넣으면 처리량이 «내려갑니다» — 락 경합, 캐시 일관성, 분산 합의처럼 서로 상태를 맞추는 비용이 이 항에 들어갑니다. 암달의 법칙에는 이 항이 없어 「늘리면 수렴할 뿐 나빠지지 않는다」로 나오는데, 실제 시스템이 그렇지 않은 이유가 여기 있습니다.

병렬도별 처리량

N상대 처리량처리량효율
111,000100%
21.8871,886.894.3%
43.3063,305.882.6%
84.9084,90861.3%
135.4625,462.242%
145.4695,468.839.1%
165.4245,423.733.9%

효율은 정점 전에도 계속 떨어집니다. 처리량이 늘고 있어도 «하나당 몫»은 줄고 있다는 뜻이라, 비용까지 따지면 정점보다 훨씬 앞에서 멈추는 것이 나을 때가 많습니다.

α와 β는 재서 얻는 값입니다. 이 계산기는 이미 정해진 두 계수로 곡선을 그릴 뿐이고, 값 자체는 N을 바꿔 가며 실제 처리량을 재고 이 식을 회귀해 뽑아야 합니다. 두 점만으로는 정하기 어렵고 정점 부근까지 포함해 여러 점을 재야 제대로 맞습니다. 남의 시스템에서 나온 α·β를 그대로 가져다 쓰면 정점 위치가 크게 어긋납니다.

사용 방법

  1. 1직렬화 계수 α를 넣습니다. 어차피 한 번에 하나씩 해야 하는 부분의 비율입니다.
  2. 2일관성 계수 β를 넣습니다. 서로 상태를 맞추느라 드는 비용이며 보통 0.0001~0.01 사이입니다.
  3. 3병렬도 N과 N=1일 때의 처리량을 넣어 실제 처리량을 봅니다.
  4. 4정점 N*을 확인합니다. 그보다 더 넣으면 처리량이 떨어집니다.
  5. 5β를 0으로 두고 견줘 보면 일관성 비용이 얼마나 갉아먹는지 보입니다.

자주 묻는 질문

C(N) = N/(1 + α(N−1) + βN(N−1))으로 병렬도 N에서의 상대 처리량을 예측하는 식입니다. 분자의 N은 일이 나뉘어 좋아지는 몫, α(N−1)은 직렬화 비용, βN(N−1)은 서로 상태를 맞추는 일관성 비용입니다. 마지막 항이 N²으로 늘어나기 때문에 어느 지점을 넘으면 처리량이 오히려 떨어집니다.

β 항이 있다는 것이 다릅니다. β를 0으로 두면 식이 C(N) = N/(1+α(N−1))로 줄어들어 직렬 비율 s = α인 암달의 법칙과 정확히 같아집니다. 암달에서는 N을 늘리면 1/s로 수렴할 뿐 나빠지지 않지만, β가 0보다 크면 정점을 지나 «내려갑니다». 서버를 더 넣었는데 느려지는 현상을 설명하는 것이 이 항입니다.

N* = √((1−α)/β)입니다. C(N)을 N으로 미분해 0이 되는 지점이며, α=0.05·β=0.005면 √(0.95/0.005) = 13.78이 나옵니다. 실제로는 정수 개수만 쓸 수 있으므로 13개나 14개 중 더 나은 쪽이 최적입니다. β가 커질수록 정점이 앞으로 당겨집니다.

참여자들이 서로 상태를 맞춰야 할 때 생깁니다. 락 경합, 캐시 일관성 프로토콜, 분산 합의, 공유 자료구조의 갱신 전파가 대표적입니다. 참여자가 N개면 맞춰야 할 짝이 N(N−1)개라 이 비용이 제곱으로 늘어납니다. 반대로 참여자끼리 아무것도 공유하지 않는 완전히 독립적인 작업이면 β가 0에 가깝습니다.

대개 그보다 앞에서 멈추는 편이 낫습니다. 효율(C(N)/N)은 정점 전에도 계속 떨어지기 때문에, 처리량이 아직 늘고 있어도 노드 하나가 기여하는 몫은 계속 줄고 있습니다. 비용까지 따지면 「처리량 최대」가 아니라 「비용 대비 처리량이 아직 견딜 만한 지점」에서 멈추는 것이 보통입니다.

N을 바꿔 가며 실제 처리량을 재고 이 식을 회귀해 뽑습니다. 두 점만으로는 정하기 어렵고 정점 부근까지 포함해 여러 점을 재야 제대로 맞습니다. 이 계산기는 이미 정해진 α·β로 곡선을 그릴 뿐 값을 추정하지 않으며, 남의 시스템에서 나온 계수를 그대로 가져다 쓰면 정점 위치가 크게 어긋납니다.

병렬도라면 무엇이든 됩니다. CPU 코어 수, 서버 노드 수, 워커 프로세스 수, 동시 사용자 수 모두 이 식에 넣을 수 있습니다. 다만 α·β는 그 축에 대해 잰 값이어야 하므로, 코어 수로 잰 계수를 사용자 수 축에 그대로 쓰면 안 됩니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.

알아두면 좋은 점

  • β=0이면 암달의 법칙과 정확히 같은 식이 됩니다. 실제 시스템이 «더 넣으면 느려지는» 것은 β 때문입니다.
  • 정점 N* = √((1−α)/β)이며 β가 커질수록 앞으로 당겨집니다.
  • α와 β는 실측 처리량에 회귀해 얻는 값입니다. 이 계산기는 값을 받기만 하고 추정하지 않습니다.
  • 효율은 정점 전에도 계속 떨어집니다. 비용까지 따지면 정점보다 앞에서 멈추는 편이 나은 경우가 많습니다.
  • 식은 부하가 고르게 나뉜다는 전제 위에 있습니다. 한쪽에 쏠린 워크로드는 이 곡선과 다르게 움직입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.