Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Непонятно на что уходит потребление CPU / 21 сообщений из 21, страница 1 из 1
08.01.2021, 22:38
    #40034261
dba2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
ХП делает 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
09.01.2021, 10:01
    #40034333
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
dba2021
Периодически ХП вызывается часто и когда например, кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду процессор на сервере загружен на 100%.

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



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

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

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

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

Все ж сходится?
С запасом даже.
...
Рейтинг: 0 / 0
09.01.2021, 10:02
    #40034334
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
пардон, дубль
...
Рейтинг: 0 / 0
09.01.2021, 10:47
    #40034341
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
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
09.01.2021, 19:16
    #40034452
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
dba2021
План не компилируется и не перекомпилируется. План в кэше живёт очень долго.


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

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

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

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

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

Что ещё может потреблять CPU теоретически? Что проверить?
...
Рейтинг: 0 / 0
11.01.2021, 16:08
    #40034892
архивариус
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
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
11.01.2021, 17:52
    #40034914
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятно на что уходит потребление CPU
dba2021
Т.е. проблема не связана с:
- компрессией
- компиляциями
- перекомпиляциями

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


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


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

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

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


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


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


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

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

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

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

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

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


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



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

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


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