[문제]
ProLiant DL360 Gen9 에서 OS에서는 24 Core 를 인식하는데,
SQL Server 2008 에서 12개의 Core만 사용해 원인 분석이 필요함
[분석결과]
sql server 2008 의 경우 processor group 을 인식하지 못한다.
windows server 의 경우 processer group 을 인식할 경우, 64개 이하는 1개의 그룹에 할당한다. (group 0)
sysinternals 의 coreinfo를 이용해 셋팅 상태를 확인해 보니
group이 2개 생성되어 있으며, group 0번에 12개 할당되고 group 1 에 12개가 할당되어 있음
결과적으로 sql server 2008 은 processor group 0번만 인식해 12개의 core만 인식하는 경우임
[문제의 해결]
HP Server bios 에서 NUMA Group Size Optimization 을 clustered -> flat 으로 변경한다.
NUMA Group Size Optimization
Use this option to configure how the system ROM reports the number of logical processors in a NUMA (Non-Uniform Memory Access) node. The resulting information helps the operating system group processors for application use.
To set NUMA Group Size Optimization:
1.From the System Utilities screen, select System Configuration → BIOS/Platform Configuration (RBSU) → Performance Options → Advanced Performance Tuning Options → NUMA Group Size Optimization and press Enter.
2.Select a setting and press Enter:
•Clustered (default)—Optimizes groups along NUMA boundaries, providing better performance.
•Flat—Enables applications that are not optimized to take advantage of processors spanning multiple groups to utilize more logical processors.
3.Press F10 to save your selection.
|
[삽질]
sql server error log
2015-10-06 20:10:55.040 서버 Detected 12 CPUs. This is an informational message; no user action is required.
2015-10-06 20:10:55.180 서버 Node configuration: node 0: CPU mask: 0x0000000000000fff Active CPU mask: 0x0000000000000fff. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
env
windows 2008 r2 ee <-- (processor group 인식 windows 20008 은 processor group 인식 못함)
sql server 2008 se <-- (processor group 인식 못함)
sql 2008 se spec
Maximum number of processors supported by the editon
processor 4개 까지 지원 (sql 2008 r2 의 경우 메모리를 64GB 까지만 지원하게 됨)
https://msdn.microsoft.com/en-us/library/ms143760(v=sql.100).aspx
think....
전체 24개의 코어가 있는데 전체의 반만 인식하는 현상이 있음..기본적으로 processor group 은 윈도우에서 64개 이하의 코어가 있을때 그룹을 나주지 않는다 (Group 0 로 할당함) 24개 미만의 코어만 있으므로 processor group 에 영향이 없을것이라 처음에 생각함.... 그래도 반만 인식하는것이 이상해 core인식 정보를 확인할 필요가 있었음 (coreinfo sysinternals.com -> core 정보를 아주 자세히 나타내 준다. numa node 간 latency 나 processor group 이나 HT, level 별 cache 사이즈 등을 알 수 있음)
coreinfo 조사결과
Logical Processor to Group Map:
Group 0:
************------------
Group 1:
------------************
ref
sql 버전별 한계 검색
https://msdn.microsoft.com/en-us/library/ms143685(v=sql.100).aspx
processor group 개념
https://msdn.microsoft.com/en-us/library/dd405503(VS.85).aspx
processor group test
https://msdn.microsoft.com/en-us/library/windows/hardware/jj123528.aspx
haswell core 정보
http://ark.intel.com/ko/products/81709/Intel-Xeon-Processor-E5-2670-v3-30M-Cache-2_30-GHz
haswell core datasheet
http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v3-datasheet-vol-1.html
sql 2008 uses half the cpu's
http://blog.calvett.co.uk/2012/07/06/sql-server-2008-uses-half-the-cpu-s/
why can't i sett the correct number of physical processors when i query sys.dm_os_sys_info in sql server 2008
http://sqlserverassociates.com/Blog/PostId/2/why-cant-i-see-the-correct-number-of-physical-processors-when-i-query-sysdmossysinfo-in-sql-server-2008
hp server proliant DL360 Gen8 vs IBM x3850 X5 ==> numa processor group usage
http://serverfault.com/questions/662860/hp-server-proliant-dl360-gen9-vs-ibm-system-x3850-x5-numa-processor-group-us
processor 라이선스와, 메모리 제약이 없는 sql 이 필요하다면 sql 2008을 쓰면서 좋은 core 가 있는 서버를 선택하면 좋을겁니다. sql 2008 r2 se 는 processor group 을 인식하나 64GB 메모리 제약이 있음
http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=emr_na-c04650594&sp4ts.oid=7500985
- end -