lkml.org 
[lkml]   [2002]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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);
\
 
 \ /
  Last update: 2005-03-22 13:25    [W:0.162 / U:0.532 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site