SAS内存使用情况和排序

| 我很好奇SAS对内存的使用,排序以及为什么它如此低效。 我有一个配备8GB内存的四核至强处理器。我有一个3GB的数据集。为什么在标准proc排序期间的任何给定时间,仅使用120MB的内存,而CPU使用率却只有15-20%?该过程似乎效率低下。 我认为,由于我有可用的内存,它将加载整个数据集,然后继续清除所有可用的CPU周期。但是只有15%?这是对可用资源的极大浪费,这让我感到困扰。似乎它在不断地来回切换 极慢的磁盘。 是否有一些神奇的设置说“ SAS,您可以利用一切来加快运行速度”,我想念的是? 运行64位SAS的64位操作系统。     
已邀请:
您可以检查MEMSIZE和SORTSIZE设置。有关排序性能的更多讨论在这里。     
与排序有关的是,不是花费时间的排序,通常是读取设置的数据并再次写出。比较而言,排序是快速的。因此,对于3GB的数据集,要花大量时间才等待磁盘提供所有数据。它可以与读取更多数据重叠,从而对部分数据进行排序,但是仍然可能受I / O约束。 也就是说,MEMSIZE和SORTSIZE至少将允许您最大程度地利用可用内存。您需要确保SAS将读取整个数据集并对其进行一次排序,然后再次将其写入。如果内存较低,或者如果未正确配置MEMSIZE / SORTSIZE,它将对数据集进行大块排序,然后必须合并这些大块。您真的想尽可能避免使用“多次遍历排序”,因为它会使处理时间加倍(必须遍历整个数据集排序块,然后再次遍历所有数据,合并这些块)。我认为您从SASLOG中获得了有关是否为多遍排序的提示。     
通常,这不是SAS的工作方式。 SAS将数据保留在磁盘驱动器上,一次仅读取其中的一小部分。对我来说,这就是SAS的优势:我将SAS用于无法容纳在RAM中的东西。 您可能对Stata,R或其他将数据保留在RAM中的软件包感兴趣。即使在同一项目中,在程序之间来回移动也很容易。     

要回复问题请先登录注册