06-14-2016 02:35 PM
I keep getting the below error for memory size. After taking a look around, it seems using memsize and fullstimer options might be a good way to resolve the error, once it is determined the memory needed. However, I don't see how to implement these options. It appears you can set it in a data step or proc, but don't see examples.
Is anyone familiar with this?
"ERROR: Unable to allocate sufficient memory. At least 1521783K bytes were requested, but only 786430K were available. You must either increase the amount of memory available, or approach the problem differently.
ERROR: The SAS System stopped processing this step because of insufficient memory."
06-14-2016 02:55 PM
I use these options when I run into problems with insufficient memory. FULLSTIMER causes SAS to add memory usage statistics to the log. MEMSIZE changes the amount of memory available to SAS. This is typically a 2-step process. First, I run the problem program with both FULLSTIMER and MEMSIZE MAX and check the log to see how much memory SAS actually needed to run the program. Second, I add OPTIONS MEMSIZE nn to the program, where nn is the amount of memory SAS needed plus a little bit more for "breathing room."
You didn't say which O/S you're using, so here's the doc for MEMSIZE and FULLSTIMER for Windows. Both options can be used in a configuration file or at SAS invocation. Here's doc on how to do this on Windows.
It may be that your program doesn't complete even when you use MEMSIZE MAX, but solving that program requires more detail about your program.
06-14-2016 11:17 PM - edited 06-16-2016 05:41 PM
As mentioned, FULLSTIMER only gives you information about memory usage, it does not change memory settings.
MEMSIZE changes the maximum SAS virtual memory footprint, and must be set at the time SAS starts.
Note that some procedures are also affected by the SORTSIZE and SUMSIZE options.
Here is a schema taken from the book
that summarises how the memory settings are nested.