블로그 이미지
LifeisSimple

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2012. 2. 18. 11:57 Brain Trainning/Server

시퀄 서버를 구성할때 가성비를 고려해 Multi Core CPU를 많이 도입하고 있습니다. (시퀄 라이선스는 소켓기준입니다.)

여기에 Hyper Threaing까지 사용하면 2 CPU소켓 으로 최대 40 Logical Core (E7 제품군의 경우) 가 가능합니다. 
(2 * E7-8800 * Hyper-Threading = 40 Logical Core)

그런데, 보통 시퀄서버를 세팅할때 Hyper Threading 을 Disable 하고 사용합니다. (2세대 Hyper-Threading 일 경우는 ON 을 해줍니다만 그냥 죽여버리는 경우가 있죠. 이러면 아까운 절반의 Logical Core를 버리게 됩니다. )

이렇게 사용하는 이유는...

1세대 Hyper-Threading 을 사용하게 되면 Logical Core 가 2이 되면서 이 2 Core가 L2 Cache를 공유하게 됩니다.
이때, 두 Core 간의 Application Data를 Cache로 다시 Loading 하게 되는 Context Switching  이 과도하게 발생해 성능상에 문제를 발생시키는 것입니다. 

이런 증상은 2세대 Hyper-Threading 에서 수정되어졌다고 합니다. 

2세대를 지원하는 것으로는
Intel Nehalem 또는 Westmere 기반의 Xeon 5500, 5600, 6500 과 7500, E7 제품 군입니다.

잘 확인해서 가성비를 극대화 할 수 있어야 하겠습니다. 

그리고, 처음 구매할때 IO만큼이나 CPU에 관심을 가져야 합니다. 요즘엔 Storage 의 성능을 커버하기 위해 여분의 CPU 를 활용하는 방안이 시퀄에 도입되고 있습니다. 바로 압축기능이죠 이 기능을 활용하면 CPU는 좀더 (3~10% 정도) 사용하는 대신 I/O및 Storage 사용량을 줄일 수 있습니다. Data Compression 의 경우 Zip 을 사용한것과 유사한 정도로 압축효과를 거둘 수 있습니다. 

아래 링크를 보면 Intel 의 CPU를 비교 가능합니다.

www.intel.com 의 http://www.intel.com/content/www/us/en/processor-comparison/compare-intel-processors.html?select=server.html 

추가 --
아래는 하이퍼 스래딩에 관한 글입니다. "프로그래머가 몰랐던 멀티코어 CPU 이야기" 에서 발췌했습니다.
동시 멀티스레딩으로 만들어진 두 논리 프로세서에 많은 캐시가 필요하다면 이 또한 해가 될 수 있다. 하이퍼스레딩과 같은 기술을 고려해서 캐시를 만들기란 쉽지 않다. 따라서 보통 캐시 장치는 동시 멀티스레딩에 무관하다. 최악에는 하이퍼스레팅으로 두 프로그램의 실행 시간이 비 하이퍼스레팅 기반의 프로세서보다 느려질 수도 있다. 두 논리 프로세서가 캐시 충돌을 자주 일으킨다면 성능이 저하될 수도 있다. 그러나 꼭 단점만 있는 것은 아니다. 다른 관점에서 보면 두 논리 프로세서가 캐시를 공유하므로 서로 좋은 효과를 낼 수도 있다. 한 논리 프로세서가 미리 데이터를 캐시에 올려다 놓고, 운 좋게 나머지 논리 프로세서가 이것을 공유한다면 이득을 얻을 수 있다. 
위의 글의 경우는 주로 시퀄서버는 1세대 Hyper-Threading에서 운이 안좋았군요.

그래도, 2세대에서는 개선이 되었고, 윈도우 2008 R2, 윈도우 7에서는 하이퍼스레딩에 적합한 스케줄링이 되어 그런 문제는 없는 듯 합니다. 
(2세대에 대한 부작용에 관한글은 아직 없는 듯 하네요)

마지막으로, Hyper-Threading 환경에서 OLAP, OLTP 성능에 대한 고민이 필요할 듯 합니다.  

참고 : NUMA 구조 (Non-Uniform Memory Access)
 


" NUMA 공유 메모리 구조에서는 시스템 전체적으로는 메모리 주소를 공유하지만, 물리적인 메모리 위치는 떨어져 있을 수 있다. NUMA의 장점은 바로 확장성에 있다. NUMA구조에서는 한 프로세서와 가까이 있는 메모리로의 접근이 다른 메모리보다 빠르다. 메모리 접근 속도가 물리적인 프로세서와 메모리의 위치에 따라 결정되기에 '비균일' 메모리 접근 속도가 만들어지는 것이다. 따라서 소프트웨어나 운영체제는 NUMA 환경이라면 이것을 인지해 최적화 할 것이다. "
posted by LifeisSimple