더북(TheBook)

그림 1-36에는 CPU가 3개밖에 없습니다. CPU가 100개라면 어떻게 될까요?

▲ 그림 1-37 한 CPU만 일하고 나머지 99개는 노는 상황

 

CPU 개수가 많아질수록 빈 공간은 넓어집니다. 이는 병렬로 처리할 수 없는 구간, 즉 시리얼 병목이 존재하는 시간이 길어질수록 총 처리량은 줄어들 수밖에 없다는 의미입니다. 이처럼 시리얼 병목이 있을 때, CPU 개수가 많을수록 총 처리 효율성이 떨어지는 현상을 가리켜 암달의 법칙(Amdahl’s Law) 혹은 암달의 저주라고 합니다.

암달의 저주를 줄이려면 시리얼 병목이 발생하는 구간을 최소로 줄여야 합니다. 프로그램이 커질수록 시리얼 병목을 완전히 없애기는 어렵습니다. 하지만 시리얼 병목을 최대한 줄이는 요령이 필요합니다. 그 요령을 알아보겠습니다.

Visual Studio에서는 Concurrency Visualizer라는 것이 있습니다. Concurrency Visualizer는 여러분의 멀티스레드 프로그램이 여러 가지 일을 정말로 동시에 잘 수행하는지 분석하여 이를 시각화해서 보여 주는 도구입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.