【问题标题】:Why real time is much higher than "user" and "system" CPU TIME combined?为什么实时远高于“用户”和“系统”CPU TIME 的总和?
【发布时间】:2022-10-14 21:41:48
【问题描述】:

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

Fullstimmer 选项已经激活,但我们不知道为什么只增加了实时时间。

在旧文档中,有 Fullstimmer 统计数据可以帮助识别问题,但它们不会出现在批处理日志中。 (统计数据如下:页面错误、上下文切换、块操作等,如您所见)

可能是 I/O 问题。有谁知道我们如何确定它是否真的是 I/O 问题,或者是否可能是其他问题(例如网络)?

更具体地说,这是随时间急剧增加的查询之一。如您所见,它正在从数据库(SQL Server、VAULT 架构)读取并在工作目录中工作和写入。

观察次数几乎相同:

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

提前致谢。

【问题讨论】:

  • 步骤是做什么的?例如,它是否受到访问数据库的限制?
  • 计算机正忙于运行其他人的工作。或者磁盘驱动程序的响应速度可能较慢,可能是因为其他用户同时访问它们。
  • 大家好,我添加了有关该步骤的更多信息。

标签: performance debugging optimization sas enterprise-guide


【解决方案1】:

要完成一个过程,需要完成的工作比 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2011-11-12
    • 2013-08-26
    • 2020-10-02
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多