powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Непонятно на что уходит потребление CPU
21 сообщений из 21, страница 1 из 1
Непонятно на что уходит потребление CPU
    #40034261
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХП делает select из таблицы по покрывающему индексу.
В 99% вызовов ХП потребление CPU = 0.
У части вызовов потребление CPU = 15 или 16 мс.
Периодически ХП вызывается часто и когда например, кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду процессор на сервере загружен на 100%.

Вопрос: почему часть вызовов может потреблять CPU и как устранить потребление CPU?

План не компилируется и не перекомпилируется. План в кэше живёт очень долго.
Чтения - только логические, кол-во чтений если потребляется CPU и не потребляется - одинаковое.

ХП - простейшая:
CREATE PROCEDURE [dbo].[my_sp]
@UmyId int
AS
BEGIN
SET NOCOUNT ON;

SELECT
...
FROM
dbo. ... WITH(NOLOCK)
WHERE
MyId = @MyId;
END

В плане - только Index Seek по покрывающему индексу.

Microsoft SQL Server 2016 (SP2-CU11-GDR) (KB4535706) - 13.0.5622.0 (X64) Dec 15 2019 08:03:11 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: )
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034333
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
Периодически ХП вызывается часто и когда например, кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду процессор на сервере загружен на 100%.

Вопрос: почему часть вызовов может потреблять CPU и как устранить потребление CPU?



С чего ты взял, что это ИМЕННО твои селекты потребляют?
У сервера есть много разных других дел.

Хотя... если прикинуть

"кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду"

15 мс * 1000 = 15000 мс = 15 сек.

Все ж сходится?
С запасом даже.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034334
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, дубль
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034341
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
План не компилируется и не перекомпилируется. План в кэше живёт очень долго.
Чтения - только логические, кол-во чтений если потребляется CPU и не потребляется - одинаковое.
Планы актуальные показывайте с потреблением и без. Тогда можно будет о чем-то говорить.

А получить при одинаковых планах и чтениях разные CPU - легко
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
use tempdb;
set ansi_nulls, quoted_identifier, xact_abort on;
go

create table dbo.t (id int identity primary key, g int, s char(100) null);

insert into dbo.t
 (g, s)
 select top (50000)
  1, cast(newid() as char(100))
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b;

insert into dbo.t
 (g, s)
 select top (50000)
  2, null
 from
  master.dbo.spt_values a cross join
  master.dbo.spt_values b;

create index IX_t__g on dbo.t (g) include (s);
go

create procedure dbo.p
 @g int

as
begin
 set nocount on;

 declare @cs int;

 select
  @cs = checksum_agg(checksum(s))
 from
  dbo.t
 where
  g = @g
 option
  (maxdop 1);
end;
go

set statistics time, io on;
exec dbo.p 1;
exec dbo.p 2;
set statistics time, io off;
go

drop procedure dbo.p;
drop table dbo.t;
go

...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034452
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
План не компилируется и не перекомпилируется. План в кэше живёт очень долго.


Как проверяли, что нет перекомпиляций?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034861
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
С чего ты взял, что это ИМЕННО твои селекты потребляют?

Настроил Extended Events сессию которая логирует всё что потребляет CPU и потом проанализировал лог.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034865
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Планы актуальные показывайте с потреблением и без. Тогда можно будет о чем-то говорить.

В плане - только Index Seek.
Когда запускаю руками с выводом Actual Plan всегда было только CPU = 0. Пробовал запускать много раз.
То есть, план есть только без потребления CPU.
Точно такой же план в кэше. Причём в кэше о живёт очень долго.

p.s. Компрессия для покрывающего индекса не используется.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034866
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик
Как проверяли, что нет перекомпиляций?

Проверил компиляции и перекомпиляции через extended events и профайлер.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034867
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. проблема не связана с:
- компрессией
- компиляциями
- перекомпиляциями

Что ещё может потреблять CPU теоретически? Что проверить?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034892
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021

ХП - простейшая:
CREATE PROCEDURE [dbo].[my_sp]
@UmyId int
AS
BEGIN
SET NOCOUNT ON;
Код: sql
1.
2.
    DECLARE @MyId AS INT;
    SET @MyId = @UmyId;


SELECT
...
FROM
dbo. ... WITH(NOLOCK)
WHERE
MyId = @MyId;
END

может так?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034914
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
Т.е. проблема не связана с:
- компрессией
- компиляциями
- перекомпиляциями

Что ещё может потреблять CPU теоретически? Что проверить?


Что, веруешь в чудесную кнопку и не можешь поверить, что выполнение запроса требует участия процессора?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034998
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
Что, веруешь в чудесную кнопку и не можешь поверить, что выполнение запроса требует участия процессора?


Склоняюсь к мысли что это database engine по каким то причинам, которые нельзя отловить в XE, профайлере, DMV and etc. потребляет CPU и на это нельзя повлиять.
Но надеюсь что я ошибаюсь и что есть какая-то другая причина про которую я пока не знаю и которую можно устранить.
Собственно поэтому и запостил сюда вопрос :)
Что это может быть за причина и как проверить эту гипотезу?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40034999
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
Склоняюсь к мысли что это database engine по каким то причинам, которые нельзя отловить в XE, профайлере, DMV and etc. потребляет CPU и на это нельзя повлиять.
Вам даже пример был показан как такое можно получить. И сказано где смотреть.

Но нет, гораздо проще и удобнее верить в магическое потребление CPU потусторонними силами...
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035009
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dba2021
В 99% вызовов ХП потребление CPU = 0.
У части вызовов потребление CPU = 15 или 16 мс.

В качестве гипотезы, может такое быть, что "скачкообразное" изменение от 0 до 15 не превышает "погрешности измерения" интервалов времени? Ну или "погрешности округления" при измерении? То есть каждый запрос отнимает от 5 до 10 мс, а при выводе - то 0, то 15.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035056
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
План с CPU = 16мс получил, он ничем не отличается от плана с CPU = 0.
Так же проверил Signal Waits, это не они...
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035058
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Вам даже пример был показан как такое можно получить. И сказано где смотреть.
Но нет, гораздо проще и удобнее верить в магическое потребление CPU потусторонними силами...


"Сказано где смотреть" - планы проверил, дело не в них.
Потребление CPU не магическое, проблема в том чтобы определить что именно потребляет.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035059
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
План с CPU = 16мс получил, он ничем не отличается от плана с CPU = 0.


Одинаковый план не означает одинаковое количество операций процессора.
Это невероятно, но это так.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035065
dba2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
Одинаковый план не означает одинаковое количество операций процессора.
Это невероятно, но это так.


Ну это очевидно.

Что ещё может потреблять CPU теоретически? Что проверить?

Это не связано с:
- разными планами
- компрессией
- компиляциями
- перекомпиляциями
- signal waits

Ещё раз повторю на всякий случай вопрос: есть какая-то другая возможная причина которую можно проверить и устранить?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035074
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021,

Ну, в принципе есть такая штука, как spinlock , но вряд ли это ваш случай. Там симптомов хватает, например вы бы видели кучу SOS_SCHEDULER_YIELD в ожиданиях...

Но черт его знает, проверьте, на всякий.
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035075
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
"Сказано где смотреть" - планы проверил, дело не в них.
И что именно там проверили?
...
Рейтинг: 0 / 0
Непонятно на что уходит потребление CPU
    #40035078
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba2021
aleks222
Одинаковый план не означает одинаковое количество операций процессора.
Это невероятно, но это так.


Ну это очевидно.



Не верю! (с) Станиславский.

Даже Index Seek требует разного количества процессора, в зависимости от того "где искомая величина" находится в упорядоченной последовательности.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Непонятно на что уходит потребление CPU
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]