* [PATCH 1/1] Only output msgmni value at boot time [not found] <20080527082441.239624000@bull.net> @ 2008-05-27 8:24 ` Nadia.Derbey 2008-05-27 16:52 ` Luck, Tony 0 siblings, 1 reply; 3+ messages in thread From: Nadia.Derbey @ 2008-05-27 8:24 UTC (permalink / raw) To: akpm; +Cc: tony.luck, linux-kernel, Nadia Derbey [-- Attachment #1: fix_msgmni_printk.patch --] [-- Type: text/plain, Size: 1931 bytes --] Hi, When posting: [PATCH 1/8] Scaling msgmni to the amount of lowmem (see http://lkml.org/lkml/2008/2/11/171), I have added a KERN_INFO message that is output each time msgmni is recomputed. In http://lkml.org/lkml/2008/4/29/575 Tony Luck complained that this message references an ipc namespace address that is useless. I first thought of using an audit_log instead of a printk, as suggested by Serge Hallyn. But unfortunately, we do not have any other information than the namespace address to provide here too. So I chose to move the message and output it only at boot time, removing the reference to the namespace. This patch applies to 2.6.26-rc2-mm1. Signed-off-by: Nadia Derbey <Nadia.Derbey@bull.net> --- ipc/msg.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) Index: linux-2.6.26-rc2-mm1/ipc/msg.c =================================================================== --- linux-2.6.26-rc2-mm1.orig/ipc/msg.c 2008-05-26 12:25:37.000000000 +0200 +++ linux-2.6.26-rc2-mm1/ipc/msg.c 2008-05-27 10:59:34.000000000 +0200 @@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespa if (allowed < MSGMNI) { ns->msg_ctlmni = MSGMNI; - goto out_callback; + return; } if (allowed > IPCMNI / nb_ns) { ns->msg_ctlmni = IPCMNI / nb_ns; - goto out_callback; + return; } ns->msg_ctlmni = allowed; - -out_callback: - - printk(KERN_INFO "msgmni has been set to %d for ipc namespace %p\n", - ns->msg_ctlmni, ns); } void msg_init_ns(struct ipc_namespace *ns) @@ -136,6 +131,10 @@ void msg_exit_ns(struct ipc_namespace *n void __init msg_init(void) { msg_init_ns(&init_ipc_ns); + + printk(KERN_INFO "msgmni has been set to %d\n", + init_ipc_ns.msg_ctlmni); + ipc_init_proc_interface("sysvipc/msg", " key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime\n", IPC_MSG_IDS, sysvipc_msg_proc_show); -- ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH 1/1] Only output msgmni value at boot time 2008-05-27 8:24 ` [PATCH 1/1] Only output msgmni value at boot time Nadia.Derbey @ 2008-05-27 16:52 ` Luck, Tony 2008-05-29 9:43 ` Nadia Derbey 0 siblings, 1 reply; 3+ messages in thread From: Luck, Tony @ 2008-05-27 16:52 UTC (permalink / raw) To: Nadia.Derbey, akpm; +Cc: linux-kernel > In http://lkml.org/lkml/2008/4/29/575 Tony Luck complained that this message > references an ipc namespace address that is useless. > > I first thought of using an audit_log instead of a printk, as suggested by > Serge Hallyn. But unfortunately, we do not have any other information than > the namespace address to provide here too. > So I chose to move the message and output it only at boot time, removing the > reference to the namespace. Diffing my before/after dmesg(8) output: < msgmni has been set to 7964 for ipc namespace a000000100a1ad58 --- > msgmni has been set to 7964 Much prettier. Thank you. I'll leave it to SGI to ponder whether it is correct to compute msgmni based on a linear function of lowmem (their big systems can have terabytes of memory, all of which is counted as lowmem). > This patch applies to 2.6.26-rc2-mm1. Acked-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Nadia Derbey <Nadia.Derbey@bull.net> --- ipc/msg.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) Index: linux-2.6.26-rc2-mm1/ipc/msg.c =================================================================== --- linux-2.6.26-rc2-mm1.orig/ipc/msg.c 2008-05-26 12:25:37.000000000 +0200 +++ linux-2.6.26-rc2-mm1/ipc/msg.c 2008-05-27 10:59:34.000000000 +0200 @@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespa if (allowed < MSGMNI) { ns->msg_ctlmni = MSGMNI; - goto out_callback; + return; } if (allowed > IPCMNI / nb_ns) { ns->msg_ctlmni = IPCMNI / nb_ns; - goto out_callback; + return; } ns->msg_ctlmni = allowed; - -out_callback: - - printk(KERN_INFO "msgmni has been set to %d for ipc namespace %p\n", - ns->msg_ctlmni, ns); } void msg_init_ns(struct ipc_namespace *ns) @@ -136,6 +131,10 @@ void msg_exit_ns(struct ipc_namespace *n void __init msg_init(void) { msg_init_ns(&init_ipc_ns); + + printk(KERN_INFO "msgmni has been set to %d\n", + init_ipc_ns.msg_ctlmni); + ipc_init_proc_interface("sysvipc/msg", " key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime\n", IPC_MSG_IDS, sysvipc_msg_proc_show); -- ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] Only output msgmni value at boot time 2008-05-27 16:52 ` Luck, Tony @ 2008-05-29 9:43 ` Nadia Derbey 0 siblings, 0 replies; 3+ messages in thread From: Nadia Derbey @ 2008-05-29 9:43 UTC (permalink / raw) To: Luck, Tony; +Cc: akpm, linux-kernel Luck, Tony wrote: >>In http://lkml.org/lkml/2008/4/29/575 Tony Luck complained that this message >>references an ipc namespace address that is useless. >> >>I first thought of using an audit_log instead of a printk, as suggested by >>Serge Hallyn. But unfortunately, we do not have any other information than >>the namespace address to provide here too. >>So I chose to move the message and output it only at boot time, removing the >>reference to the namespace. > > > Diffing my before/after dmesg(8) output: > < msgmni has been set to 7964 for ipc namespace a000000100a1ad58 > --- > >>msgmni has been set to 7964 > > > Much prettier. Thank you. > > I'll leave it to SGI to ponder whether it is correct to compute > msgmni based on a linear function of lowmem (their big systems can > have terabytes of memory, all of which is counted as lowmem). Sure that if the formula can be enhanced, that would be great. But don't forget 2 things: . msgmni cannot become higher than IPCMNI: i.e. starting from 16Gb of lowmem, and based on a value of 16K for msgmnb, msgmni won't increase. (if I'm not wrong in my computation). . there is no memory pre-allocation done based upon msgmni value: by increasing its value we are just making the DoS (for too many msg queues) come later. . there is still the possibility of lowering the value "by hand" (via procfs) if ever it is found to be too high. Regards, Nadia > > >>This patch applies to 2.6.26-rc2-mm1. > > > Acked-by: Tony Luck <tony.luck@intel.com> > > Signed-off-by: Nadia Derbey <Nadia.Derbey@bull.net> > > --- > ipc/msg.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > Index: linux-2.6.26-rc2-mm1/ipc/msg.c > =================================================================== > --- linux-2.6.26-rc2-mm1.orig/ipc/msg.c 2008-05-26 12:25:37.000000000 +0200 > +++ linux-2.6.26-rc2-mm1/ipc/msg.c 2008-05-27 10:59:34.000000000 +0200 > @@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespa > > if (allowed < MSGMNI) { > ns->msg_ctlmni = MSGMNI; > - goto out_callback; > + return; > } > > if (allowed > IPCMNI / nb_ns) { > ns->msg_ctlmni = IPCMNI / nb_ns; > - goto out_callback; > + return; > } > > ns->msg_ctlmni = allowed; > - > -out_callback: > - > - printk(KERN_INFO "msgmni has been set to %d for ipc namespace %p\n", > - ns->msg_ctlmni, ns); > } > > void msg_init_ns(struct ipc_namespace *ns) > @@ -136,6 +131,10 @@ void msg_exit_ns(struct ipc_namespace *n > void __init msg_init(void) > { > msg_init_ns(&init_ipc_ns); > + > + printk(KERN_INFO "msgmni has been set to %d\n", > + init_ipc_ns.msg_ctlmni); > + > ipc_init_proc_interface("sysvipc/msg", > " key msqid perms cbytes qnum lspid lrpid uid gid cuid cgid stime rtime ctime\n", > IPC_MSG_IDS, sysvipc_msg_proc_show); > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-05-29 9:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080527082441.239624000@bull.net>
2008-05-27 8:24 ` [PATCH 1/1] Only output msgmni value at boot time Nadia.Derbey
2008-05-27 16:52 ` Luck, Tony
2008-05-29 9:43 ` Nadia Derbey
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox