“80 Cores 256GB Memory”download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0... · 2018. 10....
Transcript of “80 Cores 256GB Memory”download.microsoft.com/download/A/C/F/ACF9283A-F123-48A0... · 2018. 10....
“80 Cores 256GB Memory” 그 장비에 무슨 일이 있었나?
김정선
대표컨설턴트/이사
㈜씨퀄로
발표자 소개
www.sqlroad.com
컨설턴트 SQL Server 컨설팅/연간기술지원/강의/SW개발
MVP Microsoft MVP (since April, 2002)
강사 뉴호라이즌 교육센터
부산글로벌 IT교육센터
집필/번역 SQL Server MVP Deep Dives Volume 2(원서)
SQL Server 초중급 관리자를 위한 DB튜닝(교재)
SQL Server 쿼리 튜닝 및 최적화 전문가(교재) Inside T-SQL Programming SQL Server 2005 개발자 가이드
SQL Server 2005 관리자 가이드
Microsoft SQL Sever 2005 포켓컨설턴트
S/W 개발 SQLBigEyes (왕눈이) System Suit
꿈을 이루다
상상을 이루다
감히 네가….
소중한 인연과
도움들…
그들과 어깨를 나란히
Microsoft MVP에 도젂하세요
꿈
그리고
열정…
www.krmvp.co.kr
다룰 내용
• SQL Server 2005/2008 이슈
• 설치 젂후 고려 사항 및 구성 튜닝
• 도입 후 변화 및 모니터링 결과
SQL Server 2005/2008 이슈 Windows Server 2008R2 기반
• 문서 이해를 위한 용어 통일
• CPU = 논리적 CPU (Hyper-Threading 포함)
• Core = 물리적 Core
• Socket
시작하기 젂
• 차세대 시스템을 위한 H/W 업그레이드
• CPU
• 새로운 프로세서, 현재 보다 많은 Core, but…낮은 Clock 속도
• Memory
• 대용량의 분석용 쿼리, 현재 보다 많은 메모리
• Storage는 대상에서 제외
장비 업그레이드
• 8 Sockets x 10 Cores
• 160 CPU?
• No Hyper-Threading
• 실제 메모리
• 사용 메모리 14.2GB?
• 업그레이드 젂, 누가?
80 Cores 256GB Memory
-- 실제 메모리(MB) -----------
전체 262038 사용 가능 247472 여유 245011
14.2GB
• 64 CPU
• Kernel도 맞춰짂 상태
SQL Server 2005/2008 지원 프로세서 수
80 Cores에서는 무슨 일이?
• Windows Server 2008R2
• 256 Cores (1024)
• 새로운 Processor(Kernel) Group 개념 도입
• SQL Server 2008R2
• 256 Cores
• X64, IA64 및 하드웨어의 종속
새로운 지원과 변화
• NUMA를 쓰시나요? • 최근 동향
• CPU Socket 당 1-NUMA 노드 • 8 Socket = 8 NUMA 노드
• CPU 0 ~ CPU 9 (노드 별)
• 256GB Memory / 8 / 10 Cores
NUMA
• NUMA와 유사하지만 상위 수준
프로세서 그룹(Processor Group) 예제
Windows
Kernel
Group 0
NUMA 0
NUMA 1
NUMA 2
NUMA 3
NUMA 4
NUMA 5
NUMA 6
NUMA 7
Hardware
NUMA 6
CPU
Socket CPU Core
HT HT
CPU Core
HT HT
CPU Core
HT HT
CPU Core
HT HT
NUMA 7
CPU
Socket CPU Core
HT HT
CPU Core
HT HT
CPU Core
HT HT
CPU Core
HT HT
Kernel
Group 1
NUMA 0
NUMA 1
NUMA 2
NUMA 3
NUMA 4
NUMA 5
NUMA 6
NUMA 7
Kernel
Group 2
NUMA 0
NUMA 1
NUMA 2
NUMA 3
NUMA 4
NUMA 5
NUMA 6
NUMA 7
Kernel
Group 3
NUMA 0
NUMA 1
NUMA 2
NUMA 3
NUMA 4
NUMA 5
NUMA 6
NUMA 7
• 무슨 일이 벌어짂 걸까?
SQL Server 2005 에서는 ?
SQL Server 2005 – 프로세서 그룹 결과
40 Cores - 두 그룹 중 하나에 할당
• groupsize maxsize
• maxgroup [ on | off ]
• etc…
bcdedit.exe - 부팅 구성 데이터 저장소 편집기
실제 적용엔 실패
• Socket 당 Core 수 조정
• BIOS 레벨
• 10 Cores 8 Cores
• 총 80 Cores 64 Cores
• 결론
• SQL Server 2008R2 or SQL Server 2012 필요
조정 사항 및 결론
• Sysinternals 유틸리티 중 하나
• Core 정보
• 가상화 관련 기능 정보
• Socket 정보
• NUMA node 정보
• NUMA Access 비용 정보
• Cache 정보
• Processor Group 정보
Coreinfo.exe
10 8Cores 변경 후
설치 젂후 고려사항 for SQL Server
• 고성능 옵션 권장
• 약 10~30% 성능 이득
• BIOS 설정과 병행 (다음 슬라이드)
• “Core Parking?”
Windows 젂원 관리 옵션
• BIOS 젂원 관리 옵션 최적화
• Intel Turbo Boost
• Hyper-Threading 은 다차원적 판단 필요
• 외부 장치 성능에도 영향
하드웨어 젂원 관리 옵션
• 대형 메모리 장비용
• 2배+ 성능 향상 사례
• Standard Edition은
별도 작업 필요
“메모리에 페이지 잠금” 권한 할당
SQL Server 서비스 계정 추가
• 추적 플래그(Trace Flag) 834
• 약 5~10% 처리 성능 증가
• SQL Server 젂용 장비, 64bit, Enterprise Edition
• “메모리에 페이지 잠금” 권한
• 서비스 시작 시간 증가 고려 – 확인 필요 • Windows Server 2008R2 향상
Large Page Allocations 고려
시간만 측정,
미 적용
• CPU 수에 따라 자동 설정
• 계산식(64bit) = 512 + ((#CPU – 4) * 16)
= 512 + (64 – 4) * 16
= 1472
• “max server memory” 설정 시 변수
Max Worker Threads
• 일반적으로 알려짂 기본 공식
• 최대 메모리(x64 경우)
= 물리적 메모리
- OS(2GB+)
- SQLThread(2MB) x Worker(Threads) 수
- 기타메모리(XP, In-Proc OLEDB, CLR GC, etc)
- 기타 App용 메모리
= 256GB 일 경우는? ^^;
Max Server Memory 설정
• 쿼리/연산자 당 동시 최대 병렬처리 수준(CPU 수) • 최소한, MAXDOP 보다 많은(> +1) Worker 소비
• 심한 경우, MAXDOP의 3배 이상도 소비
• 기본값 0(zero)
• 그럼 몇 개란 얘기?
• 권장 사항 • 순수 OLTP 시스템, 1
• OLTP + OLAP 시스템, N (여러가지 홖경 고려)
• 병렬 처리를 위해 개별 쿼리별로 MAXDOP 힌트 홗용
Max Degree of Parallelism(MAXDOP) 설정
• 160 CPU 필요? (CPU 평균사용률 8%)
• 10 Cores / NUMA 노드
• 20 CPUs / NUMA 노드
• 256GB Memory 고려
• Worker(Thread) 부족? • 필요 시 직접 조정 가능
• Max Memory 설정 변수
• 대량 병렬 처리 병목 및 성능 저하 고려
• 순수 OLTP 시스템이나 작은 시스템 및 필요에 따라 적용
Hyper-Threading 적용 이슈
ALTER SERVER CONFIGURATION 명령 (2008R2 이후)
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU=0 TO 63;
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY NUMANODE=0, 7;
ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG ON;
ALTER SERVER CONFIGURATION
SET FAILOVER CLUSTER PROPERTY HealthCheckTimeout = 15000;
2008R2
2012
할당 병목 방지
• 사젂 공간 할당
• 파일 개수
“PAGELATCH 대기 [2:<fileid>:<fixed page no>]
tempdb 파일 개수 추가 및 공간 할당
• 8개에서 시작, 4개씩 증가 1개 대비 약 20배 향상 (BMT 결과)
• 대량 임시개체 사용 시 TF1118 고려
• 정말 필요할 경우 #CPU
Bob Ward 권장 사항
(Principal Architect @ Microsoft )
도입 후 변화
및 모니터링 결과
여담: 훌륭한 User Interface란?
CPU 사용률 변화
MAX: 77.702
MAX: 17.851
Worker (Thread) 변화
960 1472 필요 시 상향 조정 가능
메모리 도둑? 넌 누구냐?
sqlservr.exe 2,868,812(KB)
14639MB 사용 중
누가?
RAMMap.exe
Nonpaged Pool 12,796,456 K
The kernel and device drivers use nonpaged pool to store data that might be access when the system can’t handle page faults...... Nonpaged pool is therefore always kept present in physical memory and ……, by Mark Russinovich
• Coreinfo.exe 내용
NUMA Node 간 액세스 비용 측정
NUMA 외부 Node 메모리 참조
NUMA 노드 ID
Target pages 3,899,392 3,899,392 3,899,392 ……
Database pages 3,218,270 3,534,226 3,600,497 ……
Page life expectancy 535,919 468,440 744,259 ……
Foreign pages 315,307 32 0 ……
30,464GB
일부 노드에서 최대 3GB 발생
SQLServer:Buffer Node
Plan Cache
7,400(MB)
6,632
15,468(MB)
13,535
성능카운터: PageLifeExpectancy
평균 2,480 평균 184,609
성능카운터: Lazy Writes/sec
평균 2.812 평균 0.003
Paging 파일 크기
현재: 4092 MB
[ Windows Server 2003 ]
조정 시 모니터링 항목 현재: 262038 MB
[ Windows Server 2008R2 ]
SQL Server 2012 – Memory Manager Redesign
Predicate sizing and governing SQL memory consumption:
sp_configure „max server memory‟ now limits all memory committed by SQL Server
Resource Governor governs all SQL memory consumption (other than special cases like buffer pool)
Improved scalability of complex queries and operations that make > 8K allocations
Improved CPU and NUMA locality for memory accesses
Single memory manager that handles page allocations of all sizes
Consistent Out-of-memory handling & management across different internal components
1
2
• Hardware Size 결정 시 충분한 검토
• Windows와 SQL Server 궁합 맞추기
• Hardware 도입 시 최소한의 성능 테스트 수행
• Upgrade 젂 성능 관련 수치 및 정보 확보
• Hardware, Windows 및 SQL Server 구성 튜닝 필수
• Upgrade 후 성능 모니터링
요약