Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CPU utilization через T-SQL?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Сделал так как здесь
http://sqlblog.com/blogs/ben_nevarez/archive/2009/07/26/getting-cpu-utilization-data-from-sql-server.aspx

Вот скрипт:

declare @ts_now bigint 
select @ts_now = ms_ticks from sys.dm_os_sys_info 

select record_id, dateadd (ms, (y.[timestamp] -@ts_now), GETDATE()) as EventTime,
SQLProcessUtilization, 
SystemIdle, 
100 - SystemIdle - SQLProcessUtilization as OtherProcessUtilization 
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



Сравнил глазами с таскменеджером на сервере и с активити монитором SSMS - как-то запрос тормозит и отстает от реальной картины.

Может есть другие варианты?
13 май 15, 18:10    [17636166]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
А почему Вы не хотите использовать счетчики производительности?
13 май 15, 18:38    [17636298]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Владислав Колосов
А почему Вы не хотите использовать счетчики производительности?


Это клиентское приложение запрашивает и рисует график.
Мне нужно, чтобы можно было и с удаленного компьютера запросить.
Через SQL запросы я получаю почти все, что нужно.
Так минимум заморочек с правами в домене и т.д.
13 май 15, 19:45    [17636533]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Winnipuh,

Если вам в реальном времени, то только счетчики. Тот же XE system_health тоже будет отставать.
13 май 15, 20:16    [17636612]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Mind
Winnipuh,

Если вам в реальном времени, то только счетчики. Тот же XE system_health тоже будет отставать.


Такой нашел, похоже он показывает относительно нормально
Правда, пока не нашел, можно ли в нем запросить отдельно SQL Server и other поцессы

select *,
    case CPUUsageBase
        when 0 then 0
        else convert(float, CPUUsage) / convert(float, CPUUsageBase)
    end as 'cpu_usage'
from
(select cntr_value as [CPUUsage]
from sys.dm_os_performance_counters
where counter_name like 'CPU usage%'
and object_name like '%Workload Group Stats%'
and cntr_type = 537003264) Usage
cross join
(select cntr_value as [CPUUsageBase]
 from sys.dm_os_performance_counters
 where 
 counter_name like 'CPU usage %'
 and object_name like '%Workload Group Stats%'
 and cntr_type = 1073939712
 ) UsageBase
14 май 15, 11:06    [17638417]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
o-o
Guest
Winnipuh
можно ли в нем запросить отдельно SQL Server и other поцессы

моя думает, что нет.
гляньте сюда, что за объекты отслеживает:
select distinct object_name
from sys.dm_os_performance_counters

+ ответ

object_name
SQLServer:Deprecated Features
SQLServer:Buffer Partition
SQLServer:User Settable
SQLServer:Databases
SQLServer:CLR
SQLServer:Cursor Manager by Type
SQLServer:Workload Group Stats
SQLServer:Exec Statistics
SQLServer:Resource Pool Stats
SQLServer:Transactions
SQLServer:Memory Manager
SQLServer:SQL Errors
SQLServer:Buffer Node
SQLServer:Plan Cache
SQLServer:Access Methods
SQLServer:Cursor Manager Total
SQLServer:Broker Activation
SQLServer:Latches
SQLServer:Broker TO Statistics
SQLServer:Wait Statistics
SQLServer:Broker/DBM Transport
SQLServer:General Statistics
SQLServer:SQL Statistics
SQLServer:Catalog Metadata
SQLServer:Broker Statistics
SQLServer:Locks
SQLServer:Buffer Manager
14 май 15, 11:25    [17638534]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o
Winnipuh
можно ли в нем запросить отдельно SQL Server и other поцессы

моя думает, что нет.
гляньте сюда, что за объекты отслеживает:
select distinct object_name
from sys.dm_os_performance_counters

+ ответ

object_name
SQLServer:Deprecated Features
SQLServer:Buffer Partition
SQLServer:User Settable
SQLServer:Databases
SQLServer:CLR
SQLServer:Cursor Manager by Type
SQLServer:Workload Group Stats
SQLServer:Exec Statistics
SQLServer:Resource Pool Stats
SQLServer:Transactions
SQLServer:Memory Manager
SQLServer:SQL Errors
SQLServer:Buffer Node
SQLServer:Plan Cache
SQLServer:Access Methods
SQLServer:Cursor Manager Total
SQLServer:Broker Activation
SQLServer:Latches
SQLServer:Broker TO Statistics
SQLServer:Wait Statistics
SQLServer:Broker/DBM Transport
SQLServer:General Statistics
SQLServer:SQL Statistics
SQLServer:Catalog Metadata
SQLServer:Broker Statistics
SQLServer:Locks
SQLServer:Buffer Manager



что можно сказать по этому?
SQL Server, Workload Group Stats Object

https://msdn.microsoft.com/en-us/cc627354
14 май 15, 14:04    [17639582]     Ответить | Цитировать Сообщить модератору
 Re: CPU utilization через T-SQL?  [new]
o-o
Guest
так это все равно внутри инстанса, просто если сконфигурирован Resource Governor,
то, видимо, там даст по разным workload group,
т.е. каждый конкретный workload group пойдет в instance_name
и по каждому своя строка.
пусть подтвердит/опровергнет тот, у кого настроен RG
14 май 15, 14:29    [17639773]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить