Messages in this thread Patch in this message | | | Date | Wed, 03 Apr 2002 09:12:39 -0800 | From | Dave Hansen <> | Subject | [RFC][PATCH] BKL reduction in do_exit |
| |
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
--- 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); | |