Общее время процесса PROC SQL, понимание журнала
Я хотел бы лучше понять журнал времени, чтобы улучшить производительность.
Мое реальное время обычно намного больше, чем время процессора. Это ожидается?
Разница связана с доступом к диску? Операции в памяти включены в процессорное время или в реальном времени?
Есть ли полезная информация об оптимизации производительности в других строках журнала?
Пример:
NOTE: PROCEDURE SQL used (Total process time):
real time 9:06.00
user cpu time 1:36.79
system cpu time 19.11 seconds
memory 7463.31k
OS Memory 24628.00k
Timestamp 06/07/2018 12:45:31 PM
Page Faults 7
Page Reclaims 1566
Page Swaps 0
Voluntary Context Switches 370694
Involuntary Context Switches 36835
Block Input Operations 0
Block Output Operations 0
1 ответ
Время ЦП - это объем обработки ЦП - сколько тактов ЦП было использовано. Это на ядро; он может быть больше реального времени, если используются несколько ядер (виртуальных или физических). Например, то, что требует интенсивной загрузки ЦП и работает с параллельной обработкой, использует 4 ядра на вашей машине в течение 2 минут, в режиме реального времени - 2 минуты, а время процессора - до 8 минут.
Реальное время - это буквально время между началом и окончанием работы. В случае proc sql
до quit
достигается - так что если вы уходите proc sql
открыть без выхода, в реальном времени может быть, пока вы в следующий раз не запустите процесс.
В большинстве случаев разница между временем ЦП и реальным временем, как вы говорите, дисковым вводом-выводом - если вы читаете по сети или с вращающегося диска, вполне вероятно, что ваш дисковый ввод-вывод займет больше времени, чем ваш ЦП время.
Чтение "файла" из памяти не включается во время ЦП, за исключением случаев, когда оно включает ЦП.
Другие поля полезны для диагностики проблем производительности на разных уровнях. Объем используемой памяти может указывать на конкретные проблемы с вашим кодом (если он использует огромные объемы памяти, возможно, вы делаете что-то неэффективно).
Возможно, вы захотите прочитать некоторые статьи по эффективности и оптимизации SQL, например, Кирку Лафлеру, в частности, посмотрите обсуждение _METHOD и _TREE в конце. И, конечно же, в документации упоминаются различные способы получения дополнительной информации, такие как STIMER и FEEDBACK.