[강좌] 병목현상의 이해 - 1부

병목현상이란?

병목현상이란 영어로 bottleneck이라고 한다. 단어 그대로 해석하자면 병(bottle)의 목(neck)이고 말 그대로 병의 입구 부분을 말한다. 병목현상은 "물은 넓은 입구를 통해 나오는 것 보다 작은 병목을 통해서 나오는 경우에 더 적은 양이 유출된다"라는 현상을 우리 주위에서 쉽게 볼 수 있는 여러 경우에 대해 적용한 것이다. 병목현상이 가장 많이 언급되는 분야는 아마도 교통 분야일 것이다. 필자는 운전을 많이 하는 편이라서 운전 중에 교통방송을 많이 듣는 편인데 어느 부분이 막힌다는 정보를 들으며 우연히 그 근처를 지나다 보면 사고가 나 있거나 갑자기 공사가 있어서 한 차선을 막고 있는 경우가 대부분이고 상습적으로 교통 체증이 있는 장소는 거의 대부분 넓었던 길이 좁아지는 경우에 교통 체증이 많이 생기게 되는 것을 볼 수 있다. 이러한 경우가 바로 병목현상의 대표적인 예일 것이다.

이러한 병목현상은 비단 교통 분야에만 적용되는 것은 아니다. 실제로 각종 유체의 흐름을 제어하는 유체 역학이 적용되는 기계 공학 쪽이나 일정한 시간에 제품을 생산해야 하는 생산라인, 그리고 앞으로 알아볼 컴퓨터에까지 병목현상은 우리 주의에 폭넓게 존재한다. 병목현상이 나타나게 되면 병목현상이 없는 경우에 비해 모든 것이 느려진다. 즉, 거리에서 병목현상이 나타나면 자동차의 속도가 느려지고 생산라인에서 병목현상이 나타나면 제품의 생산이 느려지며 컴퓨터에서 병목현상이 나타나면 컴퓨터의 속도가 느려지는 결과를 얻게 된다. 따라서 이러한 병목현상을 없애는 것이 속도는 높이는 지름길이다.

그렇다면 병목현상을 어떻게 없애는 것이 좋을까? 이는 도로의 경우를 예를 들면 이해가 빠를 것이다. 갑작스러운 공사로 인해 한 개의 차선이 막힌 경우라면 공사가 시작되는 시점을 기준으로 병목현상이 발생한다. 하지만 이러한 병목현상이 항상 발생하는 것은 아니다. 만약에 그 도로를 지나는 차량이 양이 그리 많지 않다면 병목현상은 발생하지 않는다. 그러나 차량의 양이 일정한 수준을 넘어서게 되면 병목현상이 생기기 시작하는데 이러한 병목 형상을 해결하는 방법은 차량 통행이 적은 새벽 시간을 이용해 공사를 진행하는 방법과 부득이 차량 통행이 많은 시간에 공사를 해야 한다면 교통량이 적은 도로로 미리 차량을 우회시키는 방법, 반대편에서 오는 차량이 적은 경우는 임시 차선을 설치해서 차선 수를 줄이지 않고 차량들을 통과하게 하는 방법과 같이 여러 가지 해결책이 있을 수 있다. 물론 이러한 조치들은 무척이나 간단해 보이지만 이러한 병목현상이 여러 부분에서 발생하는 경우에 전체적인 교통량과 차량의 흐름을 보았을 경우 모든 차들의 흐름을 원활하게 하는 것이 그리 쉬운 문제만은 아니다. 그래서 각종 수학적 모델이나 논문들이 아직도 발표되고 있고 이를 해결하기 위해 노력하는 여러 연구 단체나 공무원들도 존재하는 것이다.

이러한 병목현상은 우리들이 사용하는 컴퓨터에서도 많은 부분에 걸쳐 존재한다. 병목현상이 생기게 되면 컴퓨터의 속도가 상당히 느려지게 되므로 병목현상을 해결하는 것이 컴퓨터의 속도를 높이는 지름길이다. 이제 컴퓨터에서 발생하는 병목현상에 대해 구체적으로 알아보기로 하자. 아래의 글은 필자가 howpc에 연재했던 기사에서 인용했음을 밝힌다.

병목의 원인과 해결법

컴퓨터에서 병목현상이 발생하는 원인은 여러 가지가 있지만 가장 간단하고 알기 쉬운 방법으로 설명하자면 속도가 느리거나 용량이 적은 주변기기를 사용하는 경우에 가장 많이 발생한다. 가장 간단한 예로 펜티엄 III 933MHz에 메모리 512메가바이트, 7200rpm 하드디스크에 Geforce GTS 칩을 사용한 그래픽 카드를 장착한 시스템에서 28.8kbps의 구형 모뎀을 가지고 인터넷에 접속해 자료를 다운로드받는다고 가정해 보자. 다른 모든 시스템의 속도는 최고의 상태임에도 불구하고 모뎀의 속도가 느리다는 이유 하나만으로 인터넷 접속이나 파일 업로드/다운로드를 하는 경우에 엄청난 인내심(?)을 가져야 되는 것은 당연하다. 이러한 경우에 해결책은 무엇일까? 바로 초고속 통신망을 사용하는 것이다. 구형 모뎀을 과감히 제거한 다음 ADSL이나 케이블 모뎀을 통한 초고속 통신망을 사용한다면 모뎀 때문에 발생하는 병목현상을 제거할 수 있다.

하지만 실제로 컴퓨터를 사용하는데 있어서 어떠한 부분이 실제로 병목현상을 일으키는지를 자세히 분석한다는 것은 상당히 힘들다. 엄밀히 말해서 이러한 작업들은 컴퓨터 내부에 있는 각종 회로들을 분석해서 어떠한 데이터 버스가 어떤 상태로 있는지를 체크해야 하며 대기 상태가 얼마나 되는지를 분석하고 대기 상태가 나오게 되는 원인을 분석해야 하는지를 체크해야 근본적인 문제가 해결되기 때문이다. 그러나 일반적으로 컴퓨터를 사용하는 사용자들이 이러한 작업을 한다는 것은 거의 불가능하다. 하지만 걱정할 필요는 없다. 옛말에도 '나무를 보지말고 숲을 보라'란 격언이 있듯이 근본적인 분석보다는 어떠한 하드웨어나 소프트웨어가 어떠한 역할을 하고 이것 때문에 어느 정도의 병목현상이 발생하는지를 찾아내서 문제가 되는 하드웨어나 소프트웨어를 교체해주는 것으로 문제를 해결할 수 있기 때문이다.

물론 각각의 하드웨어나 소프트웨어를 좀 더 효율적으로 낭비가 없도록 설계하는 것은 하드웨어나 소프트웨어를 설계하는 설계자에게 맡기면 된다.

아이러니컬하게도 이러한 논리로 보았을 경우 병목현상이 가장 적게 일어나는 조합으로 컴퓨터를 꾸미는 것은 시중에서 구할 수 있는 가장 좋은 부품들(이러한 부품들은 인터넷의 각종 벤치마크 사이트를 통해 정보를 얻을 수 있다)을 모아서 컴퓨터를 조립하는 것이다. 그러나 이 방법은 가격적인 문제가 걸려서 일반 사용자들이 시도하기에는 부담이 너무 크다. 따라서 일반 사용자들이 사용할 수 있는 가장 좋은 병목현상을 해결하는 방법은 다음과 같다.

-어떤 용도로 컴퓨터를 사용할 것인지를 결정한다.

컴퓨터를 어떠한 용도로 사용할 것인지를 결정하는 것이야말로 병목현상을 해결하는 가장 기본적인 시작이다. 인터넷을 텍스트 형식의 e-mail만 체크하는 용도로 일주일에 5분만 사용한다면 굳이 초고속 통신망이나 네트워크의 병목현상을 해결하기 위해 자금을 투자할 필요가 없다.
실험실에서 시뮬레이션을 하는 경우라면 CPU의 속도와 메모리가 가장 중요한 요소가 되고 게임을 주로 하는 경우라면 비디오 카드에 투자를 많이 해야 한다. 동영상 편집을 하는 경우라면 빠른 CPU와 메모리, 그리고 하드디스크가 필요할 것이다. 이처럼 자신이 어떠한 작업에 컴퓨터를 사용하는지를 알아서 용도에 맞는 해결책을 생각해야 한다.

-가격대 성능비를 생각한다.

컴퓨터를 사용할 용도가 정해졌다면 용도에 알맞은 분야 중에서는 가급적 좋은 부품을 사용하는 것이 병목현상을 없애는 지름길이다. 그렇다고 무작정 최고의 제품만을 고집할 필요는 없다. 대표적인 예가 바로 그래픽 카드인데 그래픽 카드는 같은 칩셋의 제품이라고 하더라도 SDR과 DDR에 따라 가격 차이가 나고 같은 DDR에서도 메모리 크기에 따라 가격차가 많이 난다. 초고해상도로 게임을 굳이 빠르게 하는 경우가 아니라면 적당한 해상도에서 빠르게 게임을 즐길 수 있는 용량을 가진 비디오 카드를 구입하는 것이 2배 이상의 돈을 들이고도 5%의 병목현상도 해결하지 못하는 과오를 범하지 않는 지름길이다.

-가장 병목이 심한 부분을 찾는다.

자신이 많이 사용하는 분야에서 가장 병목이 심한 부분을 찾아야 한다. 만약 효율적으로 쓰이지 않는 장치가 있거나 다른 자원을 사용하고 있는 장치, 너무 느린 장치, 장치내의 부하를 조절할 능력을 가지고 있지 않은 장치(로드 밸런싱(Load balancing)이 안되는 장치)가 있다면 병목현상을 일으키므로 이러한 부분을 찾아 설정을 바꾸거나 새로운 하드웨어로 바꾸어 주는 작업이 필요하다. 때때로 병목현상은 다른 병목에 의해서 원인이 될 수도 있으므로 최초의 병목을 해결하는 것이 다른 병목을 해결하는데 근본적으로 더 중요하다.

내 컴퓨터 병목현상 진단하기

병목현상을 일으킬 수 있는 여러 가지 사항을 직접 테스트해 볼 수 있는 방법을 쉬운 원리 설명과 함께 자세히 알아보자. 참고로 다음에 사용하는 벤치마크 프로그램은 윈도우 2000과 윈도우 Me, 98에 기본적으로 포함된 프로그램이거나 Kbench 자료실에서 받을 수 있는 것들이다.


케이벤치 많이 본 뉴스