Only output msgmni value at boot time
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 Only output msgmni value at boot time
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.
--- ipc/msg.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
ipc/msg.c +6 -7
@@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespaif (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 *nvoid __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);
--
Quoted 8 lines
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_loginstead 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
---
Quoted 1 line
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).
Quoted 1 line
This patch applies to 2.6.26-rc2-mm1.
--- ipc/msg.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
ipc/msg.c +6 -7
@@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespaif (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 *nvoid __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);
--
Quoted 14 lines · Tony
Quoted 8 lines
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_loginstead 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 namespacea000000100a1ad58
---
Quoted 8 lines
Quoted 1 line
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
Quoted 52 lines
Quoted 3 lines
This patch applies to 2.6.26-rc2-mm1.
Acked-by Tony Luck <[email protected]>Signed-off-by Nadia Derbey <[email protected]>--- ipc/msg.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)Index:
linux-2.6.26-rc2-mm1/ipc/msg.c
===================================================================ipc/msg.c +6
-7@@ -98,20 +98,15 @@ void recompute_msgmni(struct ipc_namespaif (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 *nvoid __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);