Hi Folks, we recently upgraded to 82 Unidata in a testing environment, and are getting the following in SMM logs;
In UT.OBJ/_S.READLIST at line 90 insufficient memory, requested size = 37567064. Thu Feb 16 14:28:02; errno=0: ICSubCall returned from basic, ReturnCode=-1.
I do not have access to the source code for S.READLIST but it is dealing with very large save lists.
Any thoughts on what we might have wrong?
Rick Brown
------------------------------
Rick Brown
Sysadmin
Rocket Forum Shared Account
------------------------------
Rick,
Sorry, A couple of starter questions
What OS ?
What version of UniData did you upgrade from ?
What exact version of UniData did you upgrade to (8.2.1,8.2.2.8.2.3,8.2.4)
starting at UniData 8.1 we changed the way Basic Variable Allocation was done. The Basic Variable Allocation now comes from heaped memory not shared memory. There is a knowledge base article you view on this if you want more background information.
The error message is being produced when UniData does a malloc call (memory allocation) to the underlying OS to get the size of memory requested and an error is returned from the malloc call.
The malloc error can occur for several reasons including
The OS does not have that amount of memory to give call.
You have hit some OS limit or restriction, if you are UNIX you should check your ulimit values and see what they are set to
Windows does not have a ulimit in the same way Windows does but there maybe some other winodws restriction.
Also the final one is unlikely given you've only just gone to 8.2, we did introduce configurables at 8.2.4 (well from 8.2.3.2001 to be ture but 2001 and above in 8.2.3 are hotfixes and done under our controlled release process).
For reference the configurables where done via a new config file nt_limitconfig (located under $UDTHOME/include) has been added to control the amount of memory a udt or udapi_slave process can consume. The following is the default file:
# configure udapi_slave maximum memory limitation (MB), 0 stand for unlimited
udapi_slave.max_memory=0
# configure udt maximum memory limitation (MB), 0 stand for unlimited
udt.max_memory=0
If UniData detects the limit will be breached, you will see a message similar to the following:
In BP_MEM.TEST at line 4 insufficient memory, requested size = 4194305.
Note the insufficient memory message that is produced with the configurables is the same as if you hit ulimit on UNIX or if the OS had no memory left.
My best guess based on the size of memory being requested is that the savedlist has been read or put into some sort of array and the operation on the array being attempted at line 90 has breached one of the above limits with the memory request.
If you are on UNIX check your ulimits settings as a starter
Let us know how you get on
------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------
Rick,
Sorry, A couple of starter questions
What OS ?
What version of UniData did you upgrade from ?
What exact version of UniData did you upgrade to (8.2.1,8.2.2.8.2.3,8.2.4)
starting at UniData 8.1 we changed the way Basic Variable Allocation was done. The Basic Variable Allocation now comes from heaped memory not shared memory. There is a knowledge base article you view on this if you want more background information.
The error message is being produced when UniData does a malloc call (memory allocation) to the underlying OS to get the size of memory requested and an error is returned from the malloc call.
The malloc error can occur for several reasons including
The OS does not have that amount of memory to give call.
You have hit some OS limit or restriction, if you are UNIX you should check your ulimit values and see what they are set to
Windows does not have a ulimit in the same way Windows does but there maybe some other winodws restriction.
Also the final one is unlikely given you've only just gone to 8.2, we did introduce configurables at 8.2.4 (well from 8.2.3.2001 to be ture but 2001 and above in 8.2.3 are hotfixes and done under our controlled release process).
For reference the configurables where done via a new config file nt_limitconfig (located under $UDTHOME/include) has been added to control the amount of memory a udt or udapi_slave process can consume. The following is the default file:
# configure udapi_slave maximum memory limitation (MB), 0 stand for unlimited
udapi_slave.max_memory=0
# configure udt maximum memory limitation (MB), 0 stand for unlimited
udt.max_memory=0
If UniData detects the limit will be breached, you will see a message similar to the following:
In BP_MEM.TEST at line 4 insufficient memory, requested size = 4194305.
Note the insufficient memory message that is produced with the configurables is the same as if you hit ulimit on UNIX or if the OS had no memory left.
My best guess based on the size of memory being requested is that the savedlist has been read or put into some sort of array and the operation on the array being attempted at line 90 has breached one of the above limits with the memory request.
If you are on UNIX check your ulimits settings as a starter
Let us know how you get on
------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------
Thank you so much Jonathan!
We are on versions 8.2.3. for AIX we are on AIX 7.1 TL5 SP9. We were on Unidata 8.1.2
It is a development box so not as strongly provisioned as our test and production environments.
Again, thanks for giving us some things to look at.
Rick
------------------------------
Rick Brown
Sysadmin
Rocket Forum Shared Account
------------------------------
Rick,
Sorry, A couple of starter questions
What OS ?
What version of UniData did you upgrade from ?
What exact version of UniData did you upgrade to (8.2.1,8.2.2.8.2.3,8.2.4)
starting at UniData 8.1 we changed the way Basic Variable Allocation was done. The Basic Variable Allocation now comes from heaped memory not shared memory. There is a knowledge base article you view on this if you want more background information.
The error message is being produced when UniData does a malloc call (memory allocation) to the underlying OS to get the size of memory requested and an error is returned from the malloc call.
The malloc error can occur for several reasons including
The OS does not have that amount of memory to give call.
You have hit some OS limit or restriction, if you are UNIX you should check your ulimit values and see what they are set to
Windows does not have a ulimit in the same way Windows does but there maybe some other winodws restriction.
Also the final one is unlikely given you've only just gone to 8.2, we did introduce configurables at 8.2.4 (well from 8.2.3.2001 to be ture but 2001 and above in 8.2.3 are hotfixes and done under our controlled release process).
For reference the configurables where done via a new config file nt_limitconfig (located under $UDTHOME/include) has been added to control the amount of memory a udt or udapi_slave process can consume. The following is the default file:
# configure udapi_slave maximum memory limitation (MB), 0 stand for unlimited
udapi_slave.max_memory=0
# configure udt maximum memory limitation (MB), 0 stand for unlimited
udt.max_memory=0
If UniData detects the limit will be breached, you will see a message similar to the following:
In BP_MEM.TEST at line 4 insufficient memory, requested size = 4194305.
Note the insufficient memory message that is produced with the configurables is the same as if you hit ulimit on UNIX or if the OS had no memory left.
My best guess based on the size of memory being requested is that the savedlist has been read or put into some sort of array and the operation on the array being attempted at line 90 has breached one of the above limits with the memory request.
If you are on UNIX check your ulimits settings as a starter
Let us know how you get on
------------------------------
Jonathan Smith
UniData ATS
Rocket Support
------------------------------
Also, can you point me to this article?
"There is a knowledge base article you view on this if you want more background information..."
Thanks!
------------------------------
Rick Brown
Sysadmin
Rocket Forum Shared Account
------------------------------
Also, can you point me to this article?
"There is a knowledge base article you view on this if you want more background information..."
Thanks!
------------------------------
Rick Brown
Sysadmin
Rocket Forum Shared Account
------------------------------
Rick,
I think this is what you were looking for: https://my.rocketsoftware.com/RocketCommunity/s/article/UniBasic-variable-allocation-and-the-change-from-shared-to-heaped-memory-in-UniData-8
Regards
JJ
------------------------------
John Jenkins
Thame, Oxfordshire
------------------------------