2011-04-14 11 views
10

我很好奇SAS使用內存,排序,以及它爲什麼如此低效。SAS內存使用和排序

我有一個四核心至強8GB內存。我有一個3GB的數據集。爲什麼在標準處理過程中的任何特定時間,僅僅使用了120MB的ram和15-20%的CPU利用率?這似乎是該程序正在發生可怕的低效率。

在我看來,因爲我有可用的內存,它會加載整個數據集,然後繼續刪除所有可用的CPU週期。但只有15%?這是對可用資源的驚人浪費並困擾着我。它似乎不斷地往返 這個痛苦緩慢的磁盤。

有一些神奇的設置,說「SAS,你可以利用一切去更快」我錯過了?

64位操作系統運行64位SAS,順便說一句。

回答

1

一般來說,這不是SAS的工作原理。 SAS將數據保存在磁盤驅動器上,並且一次只讀取其中的一小部分。對於我來說,這就是SAS的優勢:我將SAS用於不適合RAM的東西。

您可能會感興趣Stata,R或其他軟件包,可將數據保存在RAM中。即使對於同一個項目,在程序之間移回&也是非常容易的。

3

排序的事情是,它不是排序花費時間,通常是讀取數據設置和再次寫出。分類比較快捷。因此,使用3GB數據集時,只需等待磁盤提供所有數據即可。它可以重疊排列數據的部分並讀取更多的數據,但它仍然可能是I/O限制的。也就是說,MEMSIZE和SORTSIZE將至少允許您最大限度地利用您的可用內存。您需要確保SAS將一次讀取整個數據集並對其進行排序,然後再將其寫出。如果內存較低,或者如果沒有適當配置MEMSIZE/SORTSIZE,它將按數據塊對數據集進行排序,然後必須合併這些塊。如果可能的話,你真的想要避免「多遍排序」,因爲它會將時間加倍(必須遍歷整個數據集,然後再遍歷所有數據,合併這些數據塊)。我想你會從SASLOG得到關於它是否是多遍分類的提示。