From: Eric Wong <normalperson@yhbt.net>
To: ruby.posix.mq@librelist.com
Subject: Re: Calculating the required value of "ulimit -q"
Date: Thu, 14 Jan 2010 14:55:18 -0800 [thread overview]
Message-ID: <20100114225518.GA18982@dcvr.yhbt.net> (raw)
In-Reply-To: 201001142333.34826.ibc@aliax.net
Iñaki Baz Castillo <ibc@aliax.net> wrote:
> Hi, I create a mqueue with msgsize 1024 and maxmsg 5000, so in total:
>
> 5120000 bytes
>
> I set for root that value:
>
> ~# ulimit -q 5120000
>
> However I get Errno::ENOMEM. In order it to work I must increase the ulimit to
> a value closed to 5160000.
>
> Could I know which is the exact algorithm to calculate the required "ulimit -
> q" value based on the desired msgsize and maxmsg?
> I would like my application to suggest that value if it cannot start due to
> memory limitations when creating the mqueue.
Hi Iñaki,
Under Linux, "man 2 getrlimit" says this:
RLIMIT_MSGQUEUE (Since Linux 2.6.8)
Specifies the limit on the number of bytes that can be allocated
for POSIX message queues for the real user ID of the calling
process. This limit is enforced for mq_open(3). Each message
queue that the user creates counts (until it is removed) against
this limit according to the formula:
bytes = attr.mq_maxmsg * sizeof(struct msg_msg *) +
attr.mq_maxmsg * attr.mq_msgsize
where attr is the mq_attr structure specified as the fourth
argument to mq_open(3).
The first addend in the formula, which includes sizeof(struct
msg_msg *) (4 bytes on Linux/i386), ensures that the user cannot
create an unlimited number of zero-length messages (such mes
sages nevertheless each consume some system memory for bookkeep
ing overhead).
I'm not sure about other OSes (info/research/experiences would be
greatly appreciated!).
--
Eric Wong
next prev parent reply other threads:[~2010-01-14 22:55 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-14 22:33 Calculating the required value of "ulimit -q" Iñaki Baz Castillo
2010-01-14 22:55 ` Eric Wong [this message]
2010-01-14 22:57 ` Iñaki Baz Castillo
2010-01-14 23:01 ` Iñaki Baz Castillo
2010-01-15 10:01 ` Iñaki Baz Castillo
2010-01-15 18:33 ` Iñaki Baz Castillo
2010-01-15 20:15 ` Eric Wong
2010-01-15 21:27 ` Iñaki Baz Castillo
2010-01-15 22:12 ` Eric Wong
2010-01-15 23:41 ` Iñaki Baz Castillo
2010-01-16 1:02 ` Eric Wong
2010-01-16 13:08 ` Iñaki Baz Castillo
2010-01-18 11:35 ` Eric Wong
2010-01-18 12:05 ` Iñaki Baz Castillo
2010-01-18 15:42 ` Iñaki Baz Castillo
2010-01-18 15:55 ` Iñaki Baz Castillo
2010-01-19 2:59 ` Eric Wong
2010-01-19 9:29 ` Iñaki Baz Castillo
2010-01-18 16:09 ` Iñaki Baz Castillo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://yhbt.net/ruby_posix_mq/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100114225518.GA18982@dcvr.yhbt.net \
--to=normalperson@yhbt.net \
--cc=ruby.posix.mq@librelist.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhbt.net/ruby_posix_mq.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).