|
리처드 맥두걸, 썬마이크로시스템즈 수석 엔지니어 및 "Solaris Internals" 저자 |
|
듀얼코어의 대중화가 빨라지고 있습니다. 듀얼코어 같은 CMP 시스템에서 개발자들이 알아야할 정보를 제공합니다.
Part 1 : SMP & 확장성 CMT와 SMP의 개념과 그 차이점에 대해서 설명하고 CMT의 확장성에 관해서 개발자들이 이해하기 쉽도록 간단한 법칙과 그래프를 제시합니다.
Part 2 : 개발영역에의 영향력 & 실험 CMT가 어플리케이션 개발자들에게 미칠 수 있는 영향과 그에 따른 확장성에 대한 고려를 설명하고 CMT가 기존 상용 소프트웨어들에게 미칠 수 있는 라이센스 문제에 관해 설명합니다.
Part 3 : OS 영역에의 영향력 & 병렬처리 OS의 확장성에 대해 FreeBSD, Solaris, Linux 등 각 OS를 통해 설명하고 병렬처리에 대한 새로운 개념을 제시합니다.
이번달에는 Part 1 : SMP & 확장성에 대해 다룹니다.
1. SMP
SMP(Symmetric Multiprocessing:대칭형 다중처리방식)의 출현은 컴퓨터 시스템의 확장성에 새로운 단계를 추가시켰습니다. SMP시스템은 믿을 수 없을정도로 빠른 마이크로프로세서로부터 부가적인 성능 향상을 이끌어내는 것이라기보다는, 여러개의 프로세서로 전체 시스템의 퍼포먼스를 높일 수 있도록 하는 것입니다. 소프트웨어의 병렬처리는 시스템 상에서 여러개의 작업을 동시에 처리할수 있도록 해주었고, 결과적으로 시스템 처리량 또한 증가시켰습니다. 충분한 수의 병렬처리 소프트웨어가 제공됨으로써, 시스템이 수백개의 프로세서들까지 확장될 수 있음이 증명되었습니다
최근에 비슷한 현상이 칩 레벨에서도 일어나고 있습니다. 제조회사들은 각각의 프로세서 퍼포먼스를 증가시켜서 리턴타임을 줄이는것을 추구하려 하기 보다, 하나의 다이 안에 여러개의 프로세서 코어들을 담은 칩을 생산하고 있습니다(이 저널의“The Future of Microprocessors”:마이크로프로세서의 미래 저자- Kunle Olukotun, Lance Hammond를 참조하십시오). 예를들어, AMD 옵테론 프로세서는 현재 1개의 다이 안에 총 2개의 프로세서 코어를 사용하고 있으며, 이는 싱글코어 칩에 비해 2배의 퍼포먼스를 제공합니다. 그림 1이 보여주듯이, 썬의 나이아가라 프로세서는 1개의 다이에 8개의 코어를 사용하며 각각의 코어는 각각 4개의 하드웨어 스레드와 함께 복잡하게 엮여있습니다.
이러한 새로운 CMP(Chip Multiprocessors: 칩 다중처리기)들은 한때 거대했던 멀티프로세서 시스템을 칩 레벨까지 끌어 내렸습니다. 로우엔드 4칩 듀얼 코어 옵테론 머신은 그 자체로서 소프트웨어에 8개의 프로세서 시스템처럼 보여지고, 썬의 나이아가라 프로세서의 경우, 8개의 코어에 각 코어당 4개의 스레드를 가짐으로써 하나의 칩이 그 자체로서 32 프로세서 시스템처럼 보여집니다. 결과적으로 시스템과 어플리케이션 소프트웨어가 여러개의 프로세서 또는 쓰레드를 동시에 활용하는 것이 이전 어느때보다 중요해지고 있습니다. CMP 하드웨어 프로세서가 나타남에 따라, 소프트웨어가 칩 레벨의 병렬처리를 완전히 이용할 수 있도록 확장될 것을 요구하고 있습니다.
그러므로 병렬처리를 칩레벨 까지 끌어내린것은 우리가 확장성에 대해 생각하는 방법에 대한 큰 변화가 있을것임을 상징합니다. CMP시스템의 가격이 요즘의 로우엔드 유니프로세서 시스템의 가격과 비슷해짐에 따라서 가장 싼 가격의 데스크탑 또는 서버도 높은 수준의 스레드 처리를 하게 될 것입니다. 기업레벨의 SMP시스템상에서 어플리케이션과 시스템소프트웨어의 확장을 위해 쓰여온 기술이 이제는 싱글-칩 시스템의 확장성에도 기여하게 될 것입니다. 우리가 어플리케이션을 설계하는 방법과 선택한 OS, 또한 어플리케이션을 배치하기 위해 우리가 쓰는 기술에서도 심지어 로우엔드 수준에서도 확장성에 대한 단위가 변화된 것에 따른 영향을 고려할 필요가 있습니다.

CMP : 단지 저렴한 SMP일 뿐인가?
CMP시스템에 대해 간단히 살펴보면, 각각의 칩안에 아주 약간의 프로세싱 용량을 줄인 스레드가 있고, 그 스레드 갯수만큼의 프로세서가 들어있는 SMP시스템으로 보여집니다. 각각의 하드웨어 스레드는 하나의 프로세스 코어가 가지는 리소스를 공유하고 있기 때문에, 각각의 스레드는 전체 코어의 퍼포먼스 중 일부를 가지게 됩니다. 그러므로 32 하드웨어 스레드를 1GHz에서 돌리는 8-코어칩은 쉽게 말해 32개의 250MHz프로세서를 가진 SMP시스템과 근접하다고 볼 수 있습니다. 소프트웨어상에서의 효과는 처리량이 엄청나게 증가된다는 측면에서 각 스레드간의 지연과 교묘히 상쇄됩니다. 처리량-중심의 워크로드는 동시적으로 발생하는 많은 요구(예를 들어 웹서버)를 동반하며, 최소한의 응답시간의 증가는 사실상 무시 가능한정도이지만, 시스템 처리량의 증가는 같은 클럭 스피드를 가지는 CMP가 아닌 프로세서에 비해 무시할 수 없을 만큼 증가합니다.
하지만 CMP시스템과 SMP시스템 사이에는 더 미묘한 차이가 있습니다. 만약 CMP프로세서 안에 있는 스레드나 코어가 중요한 자원을 공유한다면, 일부 스레드는 다른 스레드의 퍼포먼스에 영향을 줄 수도 있습니다. 예를 들어, 다중 스레드가 하나의 코어를 공유해서 그 코어의 첫번째-레벨의 메모리캐시를 공유할때, 코어상의 스레드A의 퍼포먼스는 다른 스레드들이 캐시상에 있는 스레드A의 데이타로 무엇을 하고 있느냐에 따라 좌우될 것입니다. 비슷한 또 다른 경우에서, 유용한 데이터는 첫번째 스레드보다 다른 스레드들에 의해 캐시 안으로 가져와 질것이기 때문에 첫번째 스레드는 실제로 다른 스레드들이 구조적으로 공유하는 캐시에 따라 이득을 보게 될 것입니다. 이 부분은 우리가 가능한 OS의 최적화에 대해 더 알아볼때 좀 더 자세히 살피도록 하겠습니다.
2. 확장성
소프트웨어의 확장
시스템 소프트웨어의 퍼포먼스는 이상적으로는 시스템상의 프로세서의 갯수에 비례하여 확장됩니다. 하지만 실제적으로 속도증가에는 한계가 있습니다.
그림 2에서 볼수 있듯이 암달(Amdahl)의 법칙은 확장성을 병렬알고리즘의 속도 증가로 정의하며, 그 속도 증가는 시리얼 프렉션(반드시 순차적으로 수행되어야 하는 연산)의 갯수를 효과적으로 제한해야 한다고 정의하고 있습니다. 만약 병렬 프로그램의 10%가 시리얼 코드를 포함한다면, 4개의 프로세서를 이용했을 때에는 최대 속도증가가 3에 불과하고(0%대비 75%정도 크기임), 프로세서를 8개까지 늘렸을 경우 단지 4.75로 줄어듭니다(0%대비 겨우 59%임). 암달(Amdahl)의 법칙은 시리얼 프렉션이 프로세서의 갯수가 증가함으로써 얻을 수 있는 스피드업에 심각한 제약을 가한다는 것을 알려줍니다.

게다가 소프트웨어는 일반적으로 여러개의 프로세서들에게 일을 분배하고 커뮤니케이션하기때문에 오버헤드를 초래합니다. 이는 퍼포먼스가 확장곡선의 최고점을 지나면 다시 하강하는 결과로 나타나게 됩니다. (그림 3 참조)

대부분의 OS와 어플리케이션은 확실히 일정량의 시리얼 코드를 포함하기 때문에, 충분한 속도증가는 절대로 일어나지 않을 것이라는 결론을 암달(Amdahl)의 법칙을 통해 얻을수 있습니다. 즉 많은 수의 프로세서들로 시스템을 만드는 것은 가격대비 성능이 절대 좋지 못하다는 것입니다. 하지만 지난 10년간 하드웨어 아키텍쳐, OS, 미들웨어, 어플리케이션 소프트웨어 측면에서 시리얼 프렉션을 줄이는데 초점을 맞추었습니다. 오늘날에는 하나의 SMP시스템상에서 시스템소프트웨어와 어플리케이션을 순차적인 100개의 프로세서들로 확장하는 것이 가능해졌습다. 그림 4는 큰 SMP구성에 데이타베이스 워크로드를 이용하여 수행된 확장성 벤치마크를 나타낸 것입니다. 이런 어플리케이션 벤치마크는 싱글시스템상에서, 증가한 프로세서의 숫자에 따른 산출물을 측정하는 방법으로 수행되었습니다.

단일 장비내 또는 장비간으로의 확장?
이처럼 큰 SMP 머신에 대한 소프트웨어의 확장은 역사적으로 단일 장비내(인트라머신)의 하나의 OS안에 있는 어떠한 하나의 큰 어플리케이션 인스턴스의 확장성에 엄격히 집중했기에 얻어진 것입니다. SAP와 같은 최상위 기업 어플리케이션은 좋은 예입니다. SAP의 최초 버전은 하나의 큰 단일 어플리케이션 서버에서 사용되었습니다. 어플리케이션 인스턴스는 유저로부터 동시에 오는 많은 요청을 병렬처리 합니다. 유저간의 순차를 나열해야 할 필요가 없으므로, 어플리케이션은 자연적으로 확장가능 합니다. 이러한 어플리케이션의 확장에 포커스를 맞추면서 이 문제는 조금씩 분할되면서 결국 순차나열의 포인트를 어플리케이션의 문제로 이동시켰습니다.
더 최근에는 로우엔드 시스템의 경제적인 측면때문에 하나 또는 두개의 프로세서를 쓰는 저가 서버를 사용하면서 장비간의 확장성으로 점차 초점이 맞추어지고 있습니다. 일부 어플리케이션들은 하나 또는 두개의 프로세서를 쓰는 시스템을 분리해놓고, 그 분리된 시스템이 다중처리를 할때 다중 인스턴스를 이용하게 함으로써 크고 비싼 SMP시스템을 요구하지 않고도 확장가능하도록 만들어 질 수 있습니다. 어플리케이션은 모든 공유 상태를 데이타베이스처럼 공유 벡엔드 서비스로 옮기는 방법으로 확장하도록 만들어 질 수 있습니다. 하나 또는 두개의 프로세서를 쓰는 시스템은 대부분 장비내 확장형태의 데이타베이스 시스템과 커뮤니케이션하기 위한 미드 티어 어플리케이션으로 구성됩니다. 하나 또는 두개의 프로세서를 쓰는 하드웨어로 포커스가 이동함에따라 단일장비내의 확장성을 가지도록 디자인해야 한다는 큰 압박은 없어지고 확장성의 문제는 소프트웨어로 이동되었습니다.
CMP에 관해 주목하지 않을수 없는 점은 낮은가격, 고도화된 집적도, 높은 처리량뿐만이 아니라, 단일장비내에 대한 확장성의 주안점을 재정의 했다는 면도 있습니다.
"기타문서" 카테고리의 다른 글
- 소프트웨어 궁극의 확장성 Part 2 (댓글 2개 / 트랙백 0개) 2006/01/23
- 2008년 웹 트렌드의 핵심키워드 '오픈소스' (댓글 0개 / 트랙백 0개) 2008/03/12
- [월간 마소 특별기고/ 솔라리스 스페셜 1부] 개발자를 위한 새로운 선택, 오픈 솔... (댓글 4개 / 트랙백 0개) 2007/02/22
- 솔라리스 라이브 업그레이드 사용 방법 안내서 (댓글 1개 / 트랙백 0개) 2008/01/23
- 소프트웨어 궁극의 확장성 Part 1 (댓글 2개 / 트랙백 0개) 2005/11/23
- 소프트웨어 궁극의 확장성 Part 3 (댓글 2개 / 트랙백 0개) 2006/02/23
- 유닉스, 절대 흔들리지 않아 (댓글 1개 / 트랙백 0개) 2007/10/22
- 서비스 지향 아키텍처(SOA)를 넘어-그 다음은? (댓글 0개 / 트랙백 0개) 2008/02/13
- 오픈 소프트웨어, 발상의 전환 필요 (댓글 0개 / 트랙백 0개) 2008/03/12
- [월간 마소 특별기고/ 솔라리스 스페셜 2부] 오픈 솔라리스와 가상화 기술 - 이창재 (댓글 5개 / 트랙백 0개) 2007/02/23
댓글을 달아 주세요
그래프까지 있어 한 눈에 볼 수 있네요. 세심함 섬세함 역시 썬입니다
2007/09/07 19:58좋은 정보 감사해요~
2007/09/19 04:57