SAS内存使用和排序

SAS内存使用和排序,sas,Sas,我很好奇SAS对内存、排序的使用,以及为什么它看起来如此低效 我有一个8GB内存的四核xeon。我有一个3GB的数据集。为什么在标准进程排序期间的任何给定时间,只使用120MB的ram,而CPU利用率仅为15-20%呢?这似乎是一个非常低效的过程 在我看来,由于我有可用的内存,它将加载整个数据集,然后继续删除所有可用的CPU周期。但只有15%?这是对可用资源的惊人浪费,让我感到困扰。它似乎不断地来回移动 速度慢得令人痛苦的磁盘 是否有一些神奇的设置,说“SAS,你可以利用一切去更快”我失踪 运行

我很好奇SAS对内存、排序的使用,以及为什么它看起来如此低效

我有一个8GB内存的四核xeon。我有一个3GB的数据集。为什么在标准进程排序期间的任何给定时间,只使用120MB的ram,而CPU利用率仅为15-20%呢?这似乎是一个非常低效的过程

在我看来,由于我有可用的内存,它将加载整个数据集,然后继续删除所有可用的CPU周期。但只有15%?这是对可用资源的惊人浪费,让我感到困扰。它似乎不断地来回移动 速度慢得令人痛苦的磁盘

是否有一些神奇的设置,说“SAS,你可以利用一切去更快”我失踪


运行64位SAS的64位操作系统,顺便说一句。

您可以检查和设置。关于排序性能的更多讨论是。

通常,SAS不是这样工作的。SAS将数据保存在磁盘驱动器上,一次只读取一小部分数据。对我来说,这就是SAS的优点:我使用SAS处理RAM中无法容纳的东西


您可能对Stata、R或另一个将数据保存在RAM中的包感兴趣。即使对于同一个项目,也很容易在程序之间来回移动

排序需要花费时间的不是排序,通常是读取数据集并再次写入。相对而言,排序比较快。因此,对于3GB数据集,只需等待磁盘提供所有数据就需要花费大量时间。它可以将部分数据的排序与读取更多数据重叠,但仍然可能受到I/O限制。 也就是说,MEMSIZE和SORTSIZE至少可以让您最大限度地利用可用内存。您需要确保SAS将一次性读取整个数据集并对其进行排序,然后再次写入。如果内存较低,或者MEMSIZE/SORTSIZE配置不合适,它将按块对数据集进行排序,然后必须合并这些块。如果可能的话,您真的希望避免“多次排序”,因为它将花费双倍的时间(必须遍历整个数据集的排序块,然后再次遍历所有数据,合并这些块)。我认为您可以从SASLOG中得到关于它是否是多通道排序的提示