Not enough memory for Posix message queues... ulimit -q doesnt work ??
Hi, I am modifying an existing application, running on openSUSE 10.3 (i586) - Kernel 2.6.22.5-31, in order to use Posix message queues instead of older Pipes.
According to linux documentation, the total requested size for an mqueue depends from the following formula:
Bytes needed = mq_maxmsg*sizeof(struct msg_msg*)+ mq_maxmsg*mq_msgsize
In my mind, sizeof(struct msg_msg*) is reserved for an "internal header" of the message.
The output of the command "ulimit -q" is 819200, so if I try to create a queue with the following parameters:
attr.mq_flags = 0;
attr.mq_maxmsg = 99;
attr.mq_msgsize = 8192;
attr.mq_curmsgs = 0;
everything works fine, because 99*4+99*8192 = 811404 (less than 819200).
Obviously, I am not able to create a bigger queue, unless I am root.
I tried to increase the available memory with the command "ulimit -q unlimited" or "ulimit -q 10000000" (as root).
Nothing seems change, the limit for the user process is stuck to 819200 and if I log out the root session and log it in again, the output value of ulimit -q comes back to 819200.
How can I change the systemwide limit?
I tried to put the "ulimit -q" command in /etc/rc.local or in /etc/security/limits.conf, but with no appreciable results.
Thanks un advance
Marco
|