BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Martin1
Calcite | Level 5

Hi

 

I have just started experimenting with one of the in memory options for SAS. The in memory libname.

I start by setting my MEMMAXSZ=2147483648 and then setting MEMSIZE = 4294967296.

 

Then I declare the libname like:

libname turbo   "c:\inmem" memlib;

 

Then I try loading a dataset of approximately 3 GB into the “turbo” library. This could be like

Data turbo.TEST_DATA_MARHA;

Set big_data_3_gb;

Run;

 

This means that we will exceed the allocated RAM size. This results to my surprise in the following error:

ERROR: Insufficient space in file TURBO.TEST_DATA_MARHA.DATA.

ERROR: File TURBO.TEST_DATA_MARHA.DATA is damaged. I/O processing did not complete.

 

I was actually expecting that SAS would swap to the diskpath ”c:\inmem” and finalize the dataset here. Now my question to you guys – is it possible to do so? (I know that it will hurt performance and so on)

If this is not possible – why do I have to give it a path when declaring the libname?

Im running 9.3 TS1M2 on a server.

 

Best regards

Martin

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

As for splitting the dataset, the V9 engine doesn't do this.

The SPDE engine does though.

 

But you can't use this engine and the memlib option on the same libname statement.

 

A workaround is to define a RAM disk in the OS and create a multi-path spde library in SAS.

 

Also, try compressing your data, it might just fit in 2GB...

View solution in original post

3 REPLIES 3
ChrisNZ
Tourmaline | Level 20

The path you give ( "c:\inmem" in your case) is a dummy. It is not used.

 

So the dataset must fit in the space you define with MEMMAXSZ.

 

Note that REALMEMSIZE (the space used by procedures) + MEMMAXSZ (the space used by RAM libraries) must fit side by side in MEMSIZE. 

 

And REALMEMSIZE must be larger than SORTSIZE or SUMSIZE (the space used by some procedures like proc means or proc sort).

 

If you want to read a lot more about this, click on the link below, a section is dedicated to in-memory data allocation (SASFILE, MEMLIB, MEMCACHE, etc).

 

ChrisNZ
Tourmaline | Level 20

As for splitting the dataset, the V9 engine doesn't do this.

The SPDE engine does though.

 

But you can't use this engine and the memlib option on the same libname statement.

 

A workaround is to define a RAM disk in the OS and create a multi-path spde library in SAS.

 

Also, try compressing your data, it might just fit in 2GB...

Martin1
Calcite | Level 5
Sadly this is not the perfect solution, but that is not on you - thank you for you help claryfying the problem and giving me an alternative.

Good day to you 🙂

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 805 views
  • 0 likes
  • 2 in conversation