2007/04/26

Solaris10 x86의 제한(limit) 점

Max # of CPUs
오픈 솔라리스에 있는 코드를 보면 알 수 있는 것인데,
amd64 아키텍쳐, 즉 64비트 x86 머쉰에서는 64개의 CPU를 운영하도록 '하드코
딩'되어 있으며 x86 아키텍쳐, 즉 32비트 x86 머쉰에서는 32개의 CPU를 운영
하도록 '하드코딩'되어 있다.

여기서 amd64 아키텍쳐라고 해서, amd CPU만 해당되는 것이 아니다. Intel의
64bit 머쉰(EM64T)들도 솔라리스는 amd64로 인식하기 때문에, 인텔의 64비트
지원 CPU들의 시스템에서는 최대 64개의 CPU를 구동할 수 있도록 되어 있다.

CPU가 이렇게 많다고 해서 성능이 다 좋아지는 것은 아니며, 하부의 하드웨어
아키텍쳐가 이만한 CPU를 잘 동작시킬 수 있는 구조를 가지고 있어야 한다.

Max # of RAM
메모리는 2TB RAM을 운영할 수 있는 스팍용 솔라리스와는 달리 x86용은 128GB
를 운용할 수 있도록 되어 있는데, 이는 CPU 구조와 밀접한 관련이 있다. 스
팍은 완전한 64bit 가상 메모리 지원 구조를 가지고 있는 반면에 x86은 그렇
지 않기 때문에 그런 것이다.

Maximum threads
예전 x86용 솔라리스에서는 최대 8000개의 스레드밖에 만들 수가 없었으나 지
금은 스레드의 개수는 완전히 시스템이 장착하고 있는 메모리의 양에 의해서
만 제한이 된다. 스레드의 기본 stack(스택) 사이즈는 1M 씩 잡혀 있으므로,
32비트의 스레드를 3만개(30,000)를 만들려면 30GB의 스택 공간이 필요하게
되므로 실행이 불가능해진다. 따라서, 이렇게 많은 스레드를 구동시키려면 기
본 스택 사이즈를 매우 작게 만들어야 한다.