블로그 이미지
010-9967-0955 보미아빠

카테고리

보미아빠, 석이 (500)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2024.4
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

공지사항

최근에 올라온 글

만약 최신의 하드웨어로 마이그레이션 할 기회가 생긴다면 아래 주의사항을 읽어보길 바란다.

 

sql server 2008 은 64개 논리 코어까지만 지원한다. 최신 10Core 4Socket CPU 에서 Hyper Thread 를 활성화 하면 모든 리소스를 사용 할 수 없다. 최신의 하드웨어로 마이그레이션 하면 sql server 2008 r2 sp1으로 가는걸 추천한다.

 

sql server 2008 의 경우 하드웨어 리미트 문서를 보면....

 

http://msdn.microsoft.com/en-us/library/ms143760(v=sql.100).aspx

 

SQL Server 2008 edition

Number of processors supported

Enterprise

Operating system maximum

Developer

Operating system maximum

Standard

4

Web

4

Workgroup

2

Express

1

Express with Tools

1

Express with Advanced Services

1

 

일단 세월이 좋아져서 좋은 하드웨어 많이 나왔으니 명확하게 bol 이나 msdn 에 logical processor limit 와 주의사항을 파인프린트라도 꼭 명시해 주면 좋겠다.

 

k-group (Processor Group / Kernel Group) 상에 1-group 은 64개의 core 를 지원 할 수 있다.

 

windows 2008 r2 전 버전(windows 2008 이전 버전)은 k-group 이 없다. 그러므로 max 64개 이상의 logical core 를 지원 할 수 없을 것이다.

windows 2008 r2 환경에서는 k-group 을 지원하니 4 Socket * 10 Core * HT = 80 개의 논리 코어가 모두 인식은 할 수 있으나 k-group 을 uneven 하게 할당 할 수 있다. QFE 를 적용하지 않은 windows 2008 r2 는 Xeon E7 Family 에서 HyperThread 를 활성화 하면, 80개가 나오는데 60개는 group 0에 20개는 group 1 에 올라온다. sysinternals 의 coreinfo 툴로 확인 할 수 있으며, 이때 QFE 를 적용하면 even 하게 배분 할 수 있기는 하다고 한다. 새로운 windows 는 이런 정책을 잘 적용되어 만들어 질것이다라고 한다.

 

자 여기서 sql server 2008 을 쓸 경우 k-group 을 인식하지 못하는데, SQL 이 시작할 때 group 0 에 할당되면 core 60개를 바라볼 수 있고 group 1 에 할당되면 core 20개를 볼 것이다. 이렇게 되면 성능문제를 경험 할 수 있을 것이다. 이 경우 Root Cause 는 64개 이상의 논리코어가 문제이기 때문에 OLTP workload 에 좋다(?) 라고 알려진 Hyper-Thread를 disable 하고 40개의 논리 코어로 보이게 하면 문제는 피해 갈 수 있다. 아니면 k-group 을 인식하는 sql server 2008 r2 를 쓰면 더 좋을 것이다.

 

windows 2008 r2 에 k-group 을 인식하지 않는 sql server 2008 같은 소프트웨어를 사용 할 때 성능 문제 이슈 해결을 위한 핫픽스가 있으나 인스턴스레벨은 지원하지 않는다고 한다. 이 또한 SQL 2008 R2로 가는 좋은 이유가 될 수 있을 것이다.

 

cmd 명령어로 특정 NUMA node 에서 명령을 실행 하고자 할 경우 windows 2008 r2 와 windows 7 의 경우 hotfix 를 설치해야지만 가능하다.

 

다시 말하지만, sql 2008 을 새로운 하드웨어로 마이그레이션 시 위 이슈는 64개 이하의 논리코어만 있다면 문제가 되지 않는다. 4개의 Socket 이 있다면, hyper thread 끄고 40개 논리코어로 운영하면 문제가 없다. 그러나 8 Socket 을 지원하는 하드웨어의 경우 sql 2008 은 하드웨어 리소스를 모두 사용할 수 있는 방법이 없다. (Hyper Thread 를 disable 하더라도 80개 논리 core 로 인식하기 때문에) 이때는 bios 등에서 core 인식 숫자를 조정해 64개 코어만 활용 할 수 있는 work-around 가 unplugged 2012에 소개 되기도 했었다.  

 

또, MS 서포트 계약이 있다면, MS 에 windows 2008 r2 에 sql 2008 sp2 의 경우 마이그레이션 하는 하드웨어와의 호환성을 검증해 달라고 요청하고, HW 벤더에는 해당 하드웨어에 적합한 SQL 버전을 추천해 달라고 해야 한다. 이때 최신의 프로세서가 실장되어 있는 Intel E7 Family 를 쓴다면 당연히 Windows 2008 r2 에 SQL 2008 R2 로 가라고 가이드 될 것이다. 이때 하드웨어 업체에는 2008 SP2 가 호환성이 있는지 또 요청하는것이 좋다. 그러나, 약간의 보수적인 SQL DBA 입장에서 버전을 바꾸지 않고 마이그레이션 하고 싶은 것도 사실이다. 이때는 모든 책임은 MS 가 지도록 해당 하드웨어에서 SQL 2008 SP2 가 잘 동작하는지 보증하라고 요청해야 할 것이다. 보증 할 수 없다면 MS 입장에서 이제것 E7 프로세서에서 나온 많은 문제를 반드시 언급해 주는것이 맞을 것이다. 그리고 우리가 권장하지 않는 버전에 대한 책임은 고객이 지는 것이다. 라고 가이드 하는것이 바를 것이다.

 

지금 메이저 버전이 SQL 2012가 나온 상황에서는 본인이 만약 2008 sp2 와 R2 sp1 의 갈림길에 서면 SQL Server 2008 R2 SP1 을 선택 할 것이다. sql server 2008 R2 SP1 이 2011년 7월 11일 나왔으므로 약 1년간 충분히 테스트가 되지 않았을까 생각한다. 더불어 할 수 있다면, SQL Server 2008 R2 SP1 이 깔려있는 사이트 리스트와 워크로드를 분석해 볼 것이다. 최신 하드웨어에 sql 2008 r2 sp1을 설치 한다면, 최신의 하드웨어를 가장 효율적이고 안정적으로 쓸 수 있을 것이다.

 

HT 를 disable 하고 40코어를 선택(sql 2008 sp2)해도 좋은 솔루션이지만 이때는 2008 r2 sp1 까지의 알려진 모든 문제에 대해서 우리 환경에서 일어나지 않음을 검증해야 하고, MS 에서 발표하지 않은 Confidential 패치의 문제점들은 안고 가야 한다.

 

말하고 싶은점은 SQL 만 생각해서는 안되고 요즘나온 최신의 하드웨어를 이해하고 마이그레이션 해야하며, 신중하게 sql server version 을 선택해야 한다는 것이다.

 

별건 아니지만, sql server 2008 은 windows 2008 과 2008 R2 의 Core installation 을 지원하지 않는다.

 

참고 url

http://msdn.microsoft.com/en-us/library/ff564483(v=vs.85).aspx

http://blogs.msdn.com/b/psssql/archive/2012/01/23/assigning-sql-server-sql-agent-to-a-processor-group-oom-hang-performance-counters-always-zero-for-buffer-pool.aspx

http://support.microsoft.com/kb/2510206/en-us

http://support.microsoft.com/default.aspx?scid=kb;EN-US;2028687

 

Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함