A week ago, I posted this:
http://groups.google.com/groups?selm=linux.kernel.3CA20C9B.20309%40us.ibm.com
Nobody had anything to sayabout it, so here's a patch. It moves the
disassociate_ctty(1) up, and releases the BKl after it gets done. Is
this a sane thing to do, or do some of those exit_*() functions still
need the tty?
The patch reduces hold times of the BKL in do_exit() by a factor of 100.
They were on the order of 200us, now they're about 1.5us. However,
those numbers were on Martin Bligh's NUMA-Q box, so they represent a
serious worst-case scenario.
The patch is stable, but I don't properly understand the consequences of
moving the disassociate_ctty(1) up. I guess we could do this instead:
lock_kernel();
sem_exit();
unlock_kernel();
__exit_files(tsk);
__exit_fs(tsk);
exit_namespace(tsk);
exit_sighand(tsk);
exit_thread();
lock_kernel();
if (current->leader)
disassociate_ctty(1);
unlock_kernel();
But, I hesitated to do that because of the lock bouncing consequences on
the NUMA-Q.
-- Dave Hansen haveblue@us.ibm.com
--------------000409080802090008080508 Content-Type: text/plain; name="do_exit-bkl_reduction-2.5.7.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="do_exit-bkl_reduction-2.5.7.patch"
--- linux-2.5.7-clean/kernel/exit.c Tue Apr 2 10:43:28 2002 +++ linux//kernel/exit.c Wed Apr 3 08:56:00 2002 @@ -500,15 +500,16 @@ lock_kernel(); sem_exit(); + if (current->leader) + disassociate_ctty(1); + unlock_kernel(); + __exit_files(tsk); __exit_fs(tsk); exit_namespace(tsk); exit_sighand(tsk); exit_thread(); - if (current->leader) - disassociate_ctty(1); - put_exec_domain(tsk->thread_info->exec_domain); if (tsk->binfmt && tsk->binfmt->module) __MOD_DEC_USE_COUNT(tsk->binfmt->module);
--------------000409080802090008080508--
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/