|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
ХП делает 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: ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 22:38 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 Периодически ХП вызывается часто и когда например, кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду процессор на сервере загружен на 100%. Вопрос: почему часть вызовов может потреблять CPU и как устранить потребление CPU? С чего ты взял, что это ИМЕННО твои селекты потребляют? У сервера есть много разных других дел. Хотя... если прикинуть "кол-во вызовов ХП с CPU = 15 или 16 мс достигает 1000 в секунду" 15 мс * 1000 = 15000 мс = 15 сек. Все ж сходится? С запасом даже. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 10:01 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
пардон, дубль ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 10:02 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 10:47 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 План не компилируется и не перекомпилируется. План в кэше живёт очень долго. Как проверяли, что нет перекомпиляций? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:16 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
aleks222 С чего ты взял, что это ИМЕННО твои селекты потребляют? Настроил Extended Events сессию которая логирует всё что потребляет CPU и потом проанализировал лог. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 14:17 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
invm Планы актуальные показывайте с потреблением и без. Тогда можно будет о чем-то говорить. В плане - только Index Seek. Когда запускаю руками с выводом Actual Plan всегда было только CPU = 0. Пробовал запускать много раз. То есть, план есть только без потребления CPU. Точно такой же план в кэше. Причём в кэше о живёт очень долго. p.s. Компрессия для покрывающего индекса не используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 14:27 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
Критик Как проверяли, что нет перекомпиляций? Проверил компиляции и перекомпиляции через extended events и профайлер. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 14:28 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
Т.е. проблема не связана с: - компрессией - компиляциями - перекомпиляциями Что ещё может потреблять CPU теоретически? Что проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 14:30 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 ХП - простейшая: CREATE PROCEDURE [dbo].[my_sp] @UmyId int AS BEGIN SET NOCOUNT ON; Код: sql 1. 2.
SELECT ... FROM dbo. ... WITH(NOLOCK) WHERE MyId = @MyId; END может так? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 16:08 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 Т.е. проблема не связана с: - компрессией - компиляциями - перекомпиляциями Что ещё может потреблять CPU теоретически? Что проверить? Что, веруешь в чудесную кнопку и не можешь поверить, что выполнение запроса требует участия процессора? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 17:52 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
aleks222 Что, веруешь в чудесную кнопку и не можешь поверить, что выполнение запроса требует участия процессора? Склоняюсь к мысли что это database engine по каким то причинам, которые нельзя отловить в XE, профайлере, DMV and etc. потребляет CPU и на это нельзя повлиять. Но надеюсь что я ошибаюсь и что есть какая-то другая причина про которую я пока не знаю и которую можно устранить. Собственно поэтому и запостил сюда вопрос :) Что это может быть за причина и как проверить эту гипотезу? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 10:19 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 Склоняюсь к мысли что это database engine по каким то причинам, которые нельзя отловить в XE, профайлере, DMV and etc. потребляет CPU и на это нельзя повлиять. Но нет, гораздо проще и удобнее верить в магическое потребление CPU потусторонними силами... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 10:29 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 В 99% вызовов ХП потребление CPU = 0. У части вызовов потребление CPU = 15 или 16 мс. В качестве гипотезы, может такое быть, что "скачкообразное" изменение от 0 до 15 не превышает "погрешности измерения" интервалов времени? Ну или "погрешности округления" при измерении? То есть каждый запрос отнимает от 5 до 10 мс, а при выводе - то 0, то 15. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 11:22 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
План с CPU = 16мс получил, он ничем не отличается от плана с CPU = 0. Так же проверил Signal Waits, это не они... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:12 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
invm Вам даже пример был показан как такое можно получить. И сказано где смотреть. Но нет, гораздо проще и удобнее верить в магическое потребление CPU потусторонними силами... "Сказано где смотреть" - планы проверил, дело не в них. Потребление CPU не магическое, проблема в том чтобы определить что именно потребляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:14 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 План с CPU = 16мс получил, он ничем не отличается от плана с CPU = 0. Одинаковый план не означает одинаковое количество операций процессора. Это невероятно, но это так. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:16 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
aleks222 Одинаковый план не означает одинаковое количество операций процессора. Это невероятно, но это так. Ну это очевидно. Что ещё может потреблять CPU теоретически? Что проверить? Это не связано с: - разными планами - компрессией - компиляциями - перекомпиляциями - signal waits Ещё раз повторю на всякий случай вопрос: есть какая-то другая возможная причина которую можно проверить и устранить? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:24 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021, Ну, в принципе есть такая штука, как spinlock , но вряд ли это ваш случай. Там симптомов хватает, например вы бы видели кучу SOS_SCHEDULER_YIELD в ожиданиях... Но черт его знает, проверьте, на всякий. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:39 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 "Сказано где смотреть" - планы проверил, дело не в них. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:40 |
|
Непонятно на что уходит потребление CPU
|
|||
---|---|---|---|
#18+
dba2021 aleks222 Одинаковый план не означает одинаковое количество операций процессора. Это невероятно, но это так. Ну это очевидно. Не верю! (с) Станиславский. Даже Index Seek требует разного количества процессора, в зависимости от того "где искомая величина" находится в упорядоченной последовательности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 14:47 |
|
|
start [/forum/topic.php?fid=46&msg=40035065&tid=1685228]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 290ms |
0 / 0 |