On Tue, 2005-03-01 at 14:53 +0100, Guillaume Thouvenin wrote: > On Tue, 2005-03-01 at 22:38 +0900, Kaigai Kohei wrote: > > > I tested without user space listeners and the cost is negligible. I will > > > test with a user space listeners and see the results. I'm going to run > > > the test this week after improving the mechanism that switch on/off the > > > sending of the message. > > > > I'm also trying to mesure the process-creation/destruction performance on following three environment. > > Archtechture: i686 / Distribution: Fedora Core 3 > > * Kernel Preemption is DISABLE > > * SMP kernel but UP-machine / Not Hyper Threading > > [1] 2.6.11-rc4-mm1 normal > > [2] 2.6.11-rc4-mm1 with PAGG based Process Accounting Module > > [3] 2.6.11-rc4-mm1 with fork-connector notification (it's enabled) > > > > When 367th-fork() was called after fork-connector notification, kernel was locked up. > > (User-Space-Listener has been also run until 366th-fork() notification was received) > > I don't see this limit on my computer. I'm currently running the lmbench > with a new fork connector patch (one that enable/disable fork connector) > on an SMP computer. I will send results and the new patch tomorrow > because the test takes a while... > > I'm using a small patch provided by Evgeniy and not included in the > 2.6.11-rc4-mm1 tree. 2.6.11-rc4-mm1 tree does not have the latest connector. Various fixes were added, not only that. I run the latest patch Guillaume sent to me(with small updates), fork bomb with more than 100k forks passed already without any freeze. I do not have numbers thought. > Best regards, > Guillaume > > --- orig/connector.c > +++ mod/connector.c > @@ -168,12 +168,11 @@ > group = NETLINK_CB((skb)).groups; > msg = (struct cn_msg *)NLMSG_DATA(nlh); > > - if (msg->len != nlh->nlmsg_len - sizeof(*msg) - sizeof(*nlh)) { > + if (NLMSG_SPACE(msg->len + sizeof(*msg)) != nlh->nlmsg_len) { > printk(KERN_ERR "skb does not have enough length: " > - "requested msg->len=%u[%u], nlh->nlmsg_len=%u[%u], skb->len=%u[must be %u].\n", > - msg->len, NLMSG_SPACE(msg->len), > - nlh->nlmsg_len, nlh->nlmsg_len - sizeof(*nlh), > - skb->len, msg->len + sizeof(*msg)); > + "requested msg->len=%u[%u], nlh->nlmsg_len=%u, skb->len=%u.\n", > + msg->len, NLMSG_SPACE(msg->len + sizeof(*msg)), > + nlh->nlmsg_len, skb->len); > kfree_skb(skb); > return -EINVAL; > } > -- Evgeniy Polyakov Crash is better than data corruption -- Arthur Grabowski