a35 sql server と numa by 熊澤幸生

32

Upload: insight-technology-inc

Post on 30-Jun-2015

990 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: A35 SQL Server と NUMA by 熊澤幸生
Page 2: A35 SQL Server と NUMA by 熊澤幸生

•−

−−

•−

−−−−−−

•−

−−−−−−−

•−

−−−−

Page 3: A35 SQL Server と NUMA by 熊澤幸生

•−

•−

Page 4: A35 SQL Server と NUMA by 熊澤幸生

Page 5: A35 SQL Server と NUMA by 熊澤幸生

Memory

CPU0 CPU1 CPU2 ・・・ CPU n

Front Side Bus

Page 6: A35 SQL Server と NUMA by 熊澤幸生

•−

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

インターコネクト

Page 7: A35 SQL Server と NUMA by 熊澤幸生

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

インターコネクト

メモリー

コント

ローラ

CPU

CPU

CPU

CPU

メ モ リ

Page 8: A35 SQL Server と NUMA by 熊澤幸生

• Node configuration: node 7: CPU mask: 0x00000000000ffc00:1 Active CPU mask: 0x00000000000ffc00:1.

• Node configuration: node 6: CPU mask: 0x00000000000003ff:1 Active CPU mask: 0x00000000000003ff:1.

• Node configuration: node 5: CPU mask: 0x0ffc000000000000:0 Active CPU mask: 0x0ffc000000000000:0.

• Node configuration: node 4: CPU mask: 0x0003ff0000000000:0 Active CPU mask: 0x0003ff0000000000:0.

• Node configuration: node 3: CPU mask: 0x000000ffc0000000:0 Active CPU mask: 0x000000ffc0000000:0.

• Node configuration: node 2: CPU mask: 0x000000003ff00000:0 Active CPU mask: 0x000000003ff00000:0.

• Node configuration: node 1: CPU mask: 0x00000000000003ff:0 Active CPU mask: 0x00000000000003ff:0.

• Node configuration: node 0: CPU mask: 0x00000000000ffc00:0 Active CPU mask: 0x00000000000ffc00:0.

• Lock partitioning is enabled.

• Using dynamic lock allocation. Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.

• Using locked pages for buffer pool.

• Large Page Extensions enabled.

• Detected 80 CPUs.

Page 9: A35 SQL Server と NUMA by 熊澤幸生

Page 10: A35 SQL Server と NUMA by 熊澤幸生

インターコネクト

Windows Node No Node 0 Node 1 Node 2 Node 3

SQLOS Node No

Node 1 Node 0 Node 1 Node 3

OS グローバル・ リソース SQLOS

ユーザノード

SQLOS グローバル・ リソース

システムノード

SQLOS ユーザノード

SQLOS ユーザノード

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

Page 11: A35 SQL Server と NUMA by 熊澤幸生

Deadlock Monitor

Resource Monitor

Lazy Writer

Scheduler Monitor

Buffer Pool

Memory Manager

Scheduling

Synchronization

Service

Lock Manager

I/O

SQL OS API

Storage Engine

SQ

L O

S A

PI

SQ

L O

S H

ostin

g A

PI

Exte

rna

l Co

mp

on

ents

(CL

R/M

DA

C)

Transaction Service

Log Manager

File Manager

Buffer Manager

Utility:

BULK Load, DBCC,

Backup / Recovery

Access Method

Manager:

Row Operation,

Index Operation,

Page Allocation,

Version Management

SQL OS

Query Processor

Network Protocol

Parser Optimizer SQL Manager Database Manager Query Executer

Procedure Cache:

Plan,

Execution Context,

Sort/Hash Area

Metadata

Cache SNI

Schedule

r

Buffer Cache:

Data Page Buffer,

Index Page Buffer

Log

Cache Checkpoint Process

Schedule

r Schedule

r

CPU CPU

CPU CPU

Memory

Controller

Memory Node n

Scheduler Scheduler

Scheduler Scheduler

Resource Monitor

Lazy Writer

Local Memory

ProcedureCache:

Plan,

Execution Context,

Sort/Hash Area

Metadata

Cache

SNI

Data Cache:

Data Page Buffer,

Index Page Buffer Log

Cache

Scheduler Monitor

IOCP

I/O

Lock Owner

Block

Lock

Block

I/O Subsystems

Page 12: A35 SQL Server と NUMA by 熊澤幸生

spid SQL User Status Blocked By Last Command Last Wait Type

1 sa background RESOURCE MONITOR SLEEP_TASK

2 sa background RESOURCE MONITOR SLEEP_TASK

3 sa background RESOURCE MONITOR PREEMPTIVE_XE_CALLBACKEXEC

UTE

4 sa background RESOURCE MONITOR SLEEP_TASK

5 sa background RESOURCE MONITOR SLEEP_TASK

6 sa background RESOURCE MONITOR SLEEP_TASK

7 sa background RESOURCE MONITOR SLEEP_TASK

8 sa background RESOURCE MONITOR SLEEP_TASK

9 sa background XE TIMER XE_TIMER_EVENT

10 sa background XE DISPATCHER XE_DISPATCHER_WAIT

11 sa background LAZY WRITER LAZYWRITER_SLEEP

12 sa background LAZY WRITER LAZYWRITER_SLEEP

13 sa background LAZY WRITER LAZYWRITER_SLEEP

14 sa background LAZY WRITER LAZYWRITER_SLEEP

15 sa background LAZY WRITER LAZYWRITER_SLEEP

16 sa background LAZY WRITER LAZYWRITER_SLEEP

17 sa background LAZY WRITER LAZYWRITER_SLEEP

18 sa background LAZY WRITER LAZYWRITER_SLEEP

19 sa background LOCK MONITOR REQUEST_FOR_DEADLOCK_SEAR

CH

20 sa background SIGNAL HANDLER KSOURCE_WAKEUP

21 sa background LOG WRITER LOGMGR_QUEUE

22 sa sleeping TASK MANAGER MISCELLANEOUS 38 sa sleeping TASK MANAGER MISCELLANEOUS

Page 13: A35 SQL Server と NUMA by 熊澤幸生

CPU コア 1

Thread or Fiber Pool

Queue Requests

Runnable Queue

Timer List

UMS Event Waiters

I/O List

スケジューラ

CPU コア 2

Thread or Fiber Pool

Queue Requests

Runnable Queue

Timer List

UMS Event Waiters

I/O List

スケジューラ

CPU コア 3

Thread or Fiber Pool

Queue Requests

Runnable Queue

Timer List

UMS Event Waiters

I/O List

スケジューラ

CPU コア 4

Thread or Fiber Pool

Queue Requests

Runnable Queue

Timer List

UMS Event Waiters

I/O List

スケジューラ

net_readdata I/O

Completion

NUMA Node n (CPU ソケット)

Page 14: A35 SQL Server と NUMA by 熊澤幸生

Timer Queue

I/O Queues

Worker Pool

Pending Queue

Runable Queue SQLOS

スケジューラ

稼動中 worker

Wake event

Aborted Task List

アイドルworker Worker ディスパッチャー

Page 15: A35 SQL Server と NUMA by 熊澤幸生

NUMA Node Id 0 1 2 3 4 5 6 7 Total

Avg Sched Load 7 9 8 5 6 7 9 20 71

Sched Switches 8,738 8,100 7,909 8,192 7,870 8,618 8,444 7,848 65,719

Sched Pass 24,080 23,843 23,800 23,890 24,308 23,577 23,776 23,426 190,700

IO Comp Passes 24,444 24,427 24,100 24,367 24,623 24,191 24,272 23,951 194,375

num tasks 46 54 50 38 37 44 51 46 366

num runnable 10 19 19 6 5 11 23 15 108

num workers 142 146 146 142 147 137 140 148 1,148

active workers 44 52 48 36 35 42 49 43 349

work queued 0 0 0 0 0 0 0 0 0

cntxt switches 143,948 157,427 173,061 155,323 153,510 153,041 159,051 162,132 1,257,493

cntxt switches(idle) 53,328 43,853 84,706 51,375 56,137 54,329 51,585 37,071 432,384 preemptive

switches 4,408 4,241 4,211 5,692 4,489 4,068 3,226 3,169 33,504

Page 16: A35 SQL Server と NUMA by 熊澤幸生

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

メモリー コント ローラ

CPU

CPU

CPU

CPU

メ モ リ

CPU

CPU

CPU

CPU

I / O バス I / O バス

Page 17: A35 SQL Server と NUMA by 熊澤幸生

Page 18: A35 SQL Server と NUMA by 熊澤幸生

0

local_node remote_node page_class read_count write_count

0 0 DATA_PAGE 48,370,601 76,458

0 0 INDEX_PAGE 11,307,810 91,198

0 0 QE_PAGE 1 0

0 0 MAP_PAGE 432,237 3,219

0 0 TEXT_PAGE 57,190 56,229

0 0 OTHER_PAGE 14 0

0 1 DATA_PAGE 505,168 41,818

0 1 INDEX_PAGE 4,599,753 136,974

0 1 QE_PAGE 0 0

0 1 MAP_PAGE 915,476 52,318

0 1 TEXT_PAGE 12 0

0 1 OTHER_PAGE 20 0

1 0 DATA_PAGE 42,417,626 28,050

1 0 INDEX_PAGE 10,256,926 88,711

1 0 QE_PAGE 0 0

1 0 MAP_PAGE 120,715 3,181

1 0 TEXT_PAGE 70 0

1 0 OTHER_PAGE 11 0

1 1 DATA_PAGE 929,389 42,298

1 1 INDEX_PAGE 4,702,397 137,878

1 1 QE_PAGE 0 0

1 1 MAP_PAGE 152,832 42,383

1 1 TEXT_PAGE 19,132 27

1 1 OTHER_PAGE 86 0

Page 19: A35 SQL Server と NUMA by 熊澤幸生

Node 0 1 2 3 4 5 6 7

0 1.0 1.5 2.3 2.7 2.7 2.7 2.7 2.7

1 1.5 1.0 2.7 2.7 3.3 3.3 3.1 1.3

2 2.3 2.3 1.0 2.2 3.9 3.9 3.8 2.7

3 2.7 2.7 1.5 1.0 3.3 3.3 3.1 2.7

4 3.6 3.6 2.7 2.7 1.0 2.5 3.3 2.4

5 3.3 3.3 3.3 3.3 1.5 1.0 2.6 2.3

6 4.0 3.9 4.0 3.9 2.3 2.3 1.0 1.5

7 3.4 3.4 3.3 3.3 2.7 2.7 1.5 1.0

Page 20: A35 SQL Server と NUMA by 熊澤幸生

SQSOS ノード ユーザ ノード

プラン キャッシュ

Query Plan

プラン キャッシュ

Execution Context

プラン キャッシュ

Execution Context

Unpartitioned Locks

Partitioned Locks

Partitioned Locks

Buffer Pool

Index Page と Data Page Buffer Pool

Index Page と Data Page

論理ログファイル

その他 その他

Page 21: A35 SQL Server と NUMA by 熊澤幸生
Page 22: A35 SQL Server と NUMA by 熊澤幸生

•−

•−

•−

Page 23: A35 SQL Server と NUMA by 熊澤幸生
Page 24: A35 SQL Server と NUMA by 熊澤幸生
Page 25: A35 SQL Server と NUMA by 熊澤幸生

Page 26: A35 SQL Server と NUMA by 熊澤幸生

Page 27: A35 SQL Server と NUMA by 熊澤幸生

•−

•−

•−

•−

•−

•−

•−

Page 28: A35 SQL Server と NUMA by 熊澤幸生
Page 29: A35 SQL Server と NUMA by 熊澤幸生

190.55

311.96

504.34

540.74

902.52

771.30

892.42

1,338.48

Xeon 5570 2P8C 2.94GHz

Xeon 5680 2P12C 3.34GHz

Xeon 7560 4P32C 2.27GHz

Xeon 7560 4P32C 2.27GHz

Xeon 7560 8P64C 2.27GHz

Xeon E7 4870 4P40C 2.4GHz

Xeon E7 4870 4P40C 2.4GHz

Xeon E7 8870 8P80C 2.4GHz

Hyper Thread On トランザクション/秒

2,400ユーザ接続

1,400ユーザ接続

1,200ユーザ接続

2,100ユーザ接続

1,050ユーザ接続

1,050ユーザ接続

500ユーザ接続

350ユーザ接続

Windows Server 2008 / SQL Server 2008

Windows Server 2008 R2 / SQL Server 2008 R2

Windows Server 2008 / SQL Server 2008 SP1

Windows Server 2008 R2 / SQL Server 2008 R2

Windows Server 2008 R2 / SQL Server 2008 R2

Windows Server 2008 R2 / SQL Server 2008 R2

Windows Server 2008 R2 / SQL Server 2008 R2

Windows Server 2008 R2 / SQL Server 2008 R2

Page 30: A35 SQL Server と NUMA by 熊澤幸生
Page 31: A35 SQL Server と NUMA by 熊澤幸生

•−

−−

•−

−−

Page 32: A35 SQL Server と NUMA by 熊澤幸生