Showing results for 
Search instead for 
Did you mean: 

Unable to set ulimit (data)

Sharjeel Saleem
Regular Advisor

Unable to set ulimit (data)

Hi All,


we wanted to change the ulimit values is HPUX .My present values is,


#ulimit -a

time(seconds)        unlimited

file(blocks)         unlimited

data(kbytes)         4194300

stack(kbytes)        131072

memory(kbytes)       unlimited

coredump(blocks)     4194303

nofiles(descriptors) 2048

orabc22:/#ulimit -d 8388600

sh: ulimit: The specified number is not valid for this command. 


we need to change the data value to 8 GB


Br, Sharjeel

Honored Contributor

Re: Unable to set ulimit (data)

The default value for "ulimit -d" comes from the kernel parameters. However, there are actually two versions of this limit: one version is for 32-bit processes (kernel parameter "maxdsiz") and another for 64-bit processes (kernel parameter "maxdsiz_64bit").


The maximum possible value for maxdsiz or "ulimit -d" for 32-bit processes is 0xfffff000, which is 4294963200 bytes in decimal, or 4194300 KiB... exactly your current value. The restriction is close to the fundamental upper limit of the 32-bit address space, so a 32-bit process simply won't be able to access much more than that, even if there were no ulimits at all.


If your current shell is running as a 32-bit process, you may not be able to use the ulimit command to directly view or change the 64-bit version of the limit, unless the shell is programmed to use getrlimit64() and setrlimit64() system calls instead of the usual getrlimit()/setrlimit() to handle the 64-bit limits specially. But if you change the maxdsiz_64bit kernel parameter to 8 GiB or greater, all new sessions should then have an increased default limit for 64-bit processes.


Also, there are two types of ulimits: "soft" limits and "hard" limits. You cannot adjust the soft limit to be higher than the current hard limit. (A regular user can adjust any soft limit freely between zero and the current hard limit, but can only decrease hard limits for his/her session. To increase hard limits, you need to be root or have the PRIV_LIMIT special privilege assigned to your account.)


Run "ulimit -H -a" to view the current hard limits (or at least the 32-bit versions of them). Use "ulimit -H -d <new_value>" to adjust the hard limit, if necessary.