总进程时间PROC SQL,了解日志

时间:2018-06-07 14:35:42

标签: sas proc-sql

我想更好地了解时间日志以提高性能。

我的实际时间通常比cpu时间大得多。是预期的吗?

是否因磁盘访问而有所不同?内存操作是否包含在CPU时间内或实时中?

在日志的其他行中是否有关于性能优化的有用信息?

一个例子:

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 个答案:

答案 0 :(得分:2)

CPU时间是CPU处理的进度 - 使用了多少CPU时钟周期。这是每个核心;如果正在使用多个核心(虚拟或物理),它可能比实时更大。例如,CPU密集型并且与并行处理一起使用的东西使用机器上的4个核心2分钟,实时将是2分钟,CPU时间可能高达8分钟。

实时是作业开始和作业结束之间的时钟时间。在proc sql的情况下,直到达到quit - 所以如果您在没有退出的情况下保持proc sql打开,则实际时间可能是您下次运行proc。

大多数时候,CPU时间和实时之间的差异就像你说的磁盘i / o一样 - 如果你通过网络或旋转磁盘读取,你的磁盘i / o可能需要更长的时间比你的CPU时间。

从内存中读取“文件”不包括在CPU时间中,除非涉及CPU。

其他字段有助于诊断不同级别的性能问题。使用的内存量可能表示您的代码存在特定问题(如果它使用大量内存,可能您执行的操作效率低下)。

您可能希望阅读一些关于SQL效率和优化的文章,例如Kirk Lafler's - 特别参见最后的_METHOD和_TREE讨论。当然,documentation中提到了获取更多信息的各种方法,例如STIMER和FEEDBACK。