debugging 为什么真实的比“用户”和“系统”CPU TIME的总和要高得多?

7vux5j2d  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(91)

我们有一个每天执行的批处理进程。本周,一个通常不超过18分钟执行时间(如您所见,是真实的)的作业,现在需要超过45分钟才能完成。

Fullstimmer选项已经激活,但我们不知道为什么只增加了真实的时间。
在旧的文档中,有Fullstimmer统计信息可以帮助识别问题,但它们不出现在批处理日志中。(统计信息如下:页错误、上下文切换、块操作等,如您所见)

这可能是一个I/O问题。有人知道我们如何才能确定这是一个真正的I/O问题,还是其他问题(例如网络)?
更具体地说,这是一个时间显著增加的查询。正如您所看到的,它从数据库(SQL Server、VAULT架构)阅读,并在工作目录中工作和写入。

观察次数几乎相同:

我们询问客户网络流量是否有任何变化,他们说还是一样。
先谢谢你。

zyfwsgd6

zyfwsgd61#

要完成一个进程,需要完成的工作远不止CPU上的实际计算。

  • 必须读取数据并写入结果。
  • 您可能必须先等待其他进程完成,并且如果您的进程包括多个步骤,每次都要写入和阅读磁盘,则每次都必须等待CPU。

在我们的情况下,如果真实的时间比cpu时间大得多,我们通常会看到网络文件系统(nfs)有很多流量。
作为一名程序员,您可能会注意到,在WORK中存储中间结果比在远程库中更有效。
通过将中间结果创建为视图(而不是表),* 如果只使用一次 *,可以节省大量时间。这不仅在SQL中可行,而且在类似这样的数据步骤中也可行

data MY_RESULT / view=MY_RESULT;
    set MY_DATA;
    where transaction_date between '1jan2022'd and 30jun2022'd;
run;

相关问题