From: Davidlohr Bueso <dave@stgolabs.net>
To: Marcus Gelderie <redmnic@gmail.com>
Cc: mtk.manpages@gmail.com, Doug Ledford <dledford@redhat.com>,
lkml <linux-kernel@vger.kernel.org>,
David Howells <dhowells@redhat.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
John Duffy <jb_duffy@btinternet.com>,
Arto Bendiken <arto@bendiken.net>,
Linux API <linux-api@vger.kernel.org>,
akpm@linux-foundation.org
Subject: Re: [PATCH v3] ipc: Modify message queue accounting to not take kernel data structures into account
Date: Mon, 06 Jul 2015 22:16:50 -0700 [thread overview]
Message-ID: <1436246210.12255.71.camel@stgolabs.net> (raw)
In-Reply-To: <20150706154928.GA19828@ramsey.localdomain>
On Mon, 2015-07-06 at 17:49 +0200, Marcus Gelderie wrote:
> A while back, the message queue implementation in the kernel was
> improved to use btrees to speed up retrieval of messages (commit
> d6629859b36). The patch introducing the improved kernel handling of
> message queues (using btrees) has, as a by-product, changed the
> meaning of the QSIZE field in the pseudo-file created for the queue.
> Before, this field reflected the size of the user-data in the queue.
> Since, it also takes kernel data structures into account. For
> example, if 13 bytes of user data are in the queue, on my machine the
> file reports a size of 61 bytes.
>
> There was some discussion on this topic before (for example
> https://lkml.org/lkml/2014/10/1/115). Commenting on a th lkml, Michael
> Kerrisk gave the following background (https://lkml.org/lkml/2015/6/16/74):
>
> The pseudofiles in the mqueue filesystem (usually mounted at
> /dev/mqueue) expose fields with metadata describing a message
> queue. One of these fields, QSIZE, as originally implemented,
> showed the total number of bytes of user data in all messages in
> the message queue, and this feature was documented from the
> beginning in the mq_overview(7) page. In 3.5, some other (useful)
> work happened to break the user-space API in a couple of places,
> including the value exposed via QSIZE, which now includes a measure
> of kernel overhead bytes for the queue, a figure that renders QSIZE
> useless for its original purpose, since there's no way to deduce
> the number of overhead bytes consumed by the implementation.
> (The other user-space breakage was subsequently fixed.)
Michael, this breakage was never finally documented in the manpage,
right? I took a look and there is no mention, but it was a quick look.
It's just that if this patch goes in, I'd hate ending up with something
like this in the manpage:
as of 3.5
<accounts for kernel overhead>
as of 4.3
<behavior reverted back to not include kernel overhead... *sigh*>
If there are changes to be made to the manpage, it should probably be
posted with this patch, methinks.
>
> This patch removes the accounting of kernel data structures in the
> queue. Reporting the size of these data-structures in the QSIZE field
> was a breaking change (see Michael's comment above). Without the QSIZE
> field reporting the total size of user-data in the queue, there is no
> way to deduce this number.
>
> It should be noted that the resource limit RLIMIT_MSGQUEUE is counted
> against the worst-case size of the queue (in both the old and the new
> implementation). Therefore, the kernel overhead accounting in QSIZE is
> not necessary to help the user understand the limitations RLIMIT imposes
> on the processes.
Also, I would suggest adding some comment in struct mqueue_inode_info
for future reference, ie:
- unsigned long qsize; /* size of queue in memory (sum of all msgs) */
+ /*
+ * Size of queue in memory (sum of all msgs). Accounts for
+ * only userspace overhead; ignoring any in-kernel rbtree nodes.
+ */
+ unsigned long qsize;
But no big deal in any case.
I think this is the right approach, but would still like to know if Doug
has any concerns about it.
Thanks,
Davidlohr
next prev parent reply other threads:[~2015-07-07 5:17 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-22 22:25 [PATCH v2] ipc: Modify message queue accounting to reflect both total user data and auxiliary kernel data Marcus Gelderie
2015-06-25 5:47 ` Davidlohr Bueso
2015-06-25 7:23 ` Michael Kerrisk (man-pages)
2015-06-25 18:21 ` Davidlohr Bueso
2015-07-06 15:49 ` [PATCH v3] ipc: Modify message queue accounting to not take kernel data structures into account Marcus Gelderie
2015-07-07 5:16 ` Davidlohr Bueso [this message]
2015-07-07 13:01 ` Michael Kerrisk (man-pages)
2015-07-08 19:17 ` Doug Ledford
2015-07-08 19:53 ` Michael Kerrisk (man-pages)
2015-07-08 21:49 ` Davidlohr Bueso
2015-07-10 0:00 ` Davidlohr Bueso
2015-07-11 0:48 ` [PATCH 2/1] ipc,mqueue: Delete bogus overflow check Davidlohr Bueso
2015-07-11 2:03 ` Al Viro
2015-07-11 2:59 ` Doug Ledford
2015-07-14 16:11 ` Marcus Gelderie
2015-06-25 18:50 ` [PATCH v2] ipc: Modify message queue accounting to reflect both total user data and auxiliary kernel data Marcus Gelderie
2015-07-07 18:49 ` Doug Ledford
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1436246210.12255.71.camel@stgolabs.net \
--to=dave@stgolabs.net \
--cc=akpm@linux-foundation.org \
--cc=arto@bendiken.net \
--cc=dhowells@redhat.com \
--cc=dledford@redhat.com \
--cc=jb_duffy@btinternet.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=redmnic@gmail.com \
--cc=viro@zeniv.linux.org.uk \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®