익숙함에 속아 컴퓨터를 잃지 말자 - 2(암달의 법칙)

KIM 쥬얼리 (vs0610)·2020년 12월 27일
0
post-thumbnail

Amdahl의 법칙

미국의 컴퓨터 공학자이자 기업가였던 진 암달은(Gene Amdahl)은 어느 시스템에서 한 부분의 성능을 개선할 때 그 개선율이 시스템의 전체 성능에 미치는 영향에 대해 간단하고 직관적인 관찰을 하였다. 한 부분의 성능이 전체 시스템에 미치는 영향에 중요한 두 가지 부분이 있는데 첫째, 그 부분이 시스템에 있어서 얼마나 중요한가(차지하고 있는가), 둘째, 그 부분의 성능이 얼마나 개선되었는가(빨라졌는가) 이다.

만약 한 부분의 성능이 개선되기 전의 시스템이 실행되는 시간을 Tord라고 하고 그 부분이 시스템에서 차지하는 부분(비율)을 a(%)라고 하며, 그 부분의 성능을 k배 만큼 개선했다고 해보자. 그렇다면 그 부분은 개선전 프로그램에서 Tord시간에 a를 곱한 a X Tord 만큼의 시간을 사용했을 것이다. 그리고 성능이 개선된 후에는 그 시간을 k로 나눈 만큼을 사용하게 된다. 따라서 전체 실행 시간은 다음과 같다.

Tnew = (1-a)Tord + (a X Tord)/k = Tord{(1-a) + a/k}

이것을 통해 개선된 속도를 S 라고 한다면 S = Told / Tnew 가 되고 다음과 같이 구한다.

S = 1 / {(1-a)+a/k}

연습문제를 풀어보면서 이해해보자

당신이 트럭 운전사로 일한다고 가정해보자. 아이다호 주 보이스 시에서 미네소타 주 미네아폴리스까지 총 2,500km 거리의 구간에 대량의 감자를 운송하는 일로 고용되었다고 가정해보자. 제한 속도를 준수하면서 평균 100km/h로 운전해서 한 번 가는 데 약 25시간이 걸릴 것이라고 예측하였다.

A . 여행 구간 중 1,500km에 해당하는 몬테나 주에서 방금 속도제한을 철폐한다는 뉴스를 듣게 되었다. 당신의 트럭이 150km/h로 주행할 수 있다면, 이번 여행에서 속도 개선율은 얼마가 되겠는가?

암달의 법칙의 중요한 점은 시스템 전체의 성능 개선을 위해서는 한 부분만의 월등한 개선보다는 많은 부분을 개선해야 한다는 점이다. 위의 예시에서 만약 몬테나 주를 트럭이 300km/h로 달린다고 하여도 전체 시간의 겨우 1.67배의 속도 개선밖에는 이루워지지 않는다는 점이다. 따라서 프로그래머는 시스템 전체의 개선을 원한다면 상당수 많은 부분을 개선하려는 노력을 해야한다.

0개의 댓글