declare @ms_now bigint
select @ms_now = ms_ticks from sys. dm_os_sys_info ;
select record_id ,
dateadd (ms , - 1 * ( @ms_now - [timestamp] ), GetDate ()) as [EventTime],
SQLProcessUtilization ,
100 - ( SystemIdle + SQLProcessUtilization) as [OtherProcessUtilization] ,
100 - SystemIdle as [Total CPU Usage]
from (
select
record .value ( '(./Record/@id)[1]', 'int') as record_id ,
record .value ( '(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]' , 'int' ) as SystemIdle ,
record .value ( '(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]' , 'int' ) as SQLProcessUtilization ,
[timestamp]
from (
select timestamp , convert ( xml, record) as record
from sys . dm_os_ring_buffers
where ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
and record like '%<SystemHealth>%'
) as x
) as y
order by record_id desc
SQLProcessUtilization : SQL Server가 사용하는 CPU 사용량.
OtherProcessUtilization : SQL Server를 제외한 기타 응용프로그램의 CPU 사용량.
Total CPU Usage : OS에서 실행되는 모든 응용프로그램의 CPU 사용량 총 합.
보통 CPU 사용량을 확인하기 위해 성능카운터(Processor Time)로 확인을 하거나 작업관리자에서 CPU 사용량을 확인할 수 있는데 sys.dm_os_ring_buffers 라는 DMV를 사용하여 SQL Server 에서 CPU 사용량을 모니터링 할 수 있습니다. 이 DMV는 문서화 되지 않은 기능이고, CPU 뿐만 아니라 메모리 관련 정보들도 확인할 수 있습니다.
'Dynamic Management Views' 카테고리의 다른 글
물리적 디스크 드라이브의 공간 확인 (0) | 2013.06.19 |
---|---|
데이터파일(mdf,ndf) 및 로그파일(ldf) 사용량 확인 (0) | 2013.05.18 |
[DMV] 실행계획에 사용되고 있는 물리연산자 살펴보기 (0) | 2013.05.11 |
DMV를 이용하여 현재 실행되고 있는 쿼리문 보기 (0) | 2013.05.09 |
인덱스 조각화 (0) | 2013.05.09 |