Miklos Szeredi
53da1d9456
fix ptrace slowness
...
This patch fixes bug #12208 :
Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=12208
Subject : uml is very slow on 2.6.28 host
This turned out to be not a scheduler regression, but an already
existing problem in ptrace being triggered by subtle scheduler
changes.
The problem is this:
- task A is ptracing task B
- task B stops on a trace event
- task A is woken up and preempts task B
- task A calls ptrace on task B, which does ptrace_check_attach()
- this calls wait_task_inactive(), which sees that task B is still on the runq
- task A goes to sleep for a jiffy
- ...
Since UML does lots of the above sequences, those jiffies quickly add
up to make it slow as hell.
This patch solves this by not rescheduling in read_unlock() after
ptrace_stop() has woken up the tracer.
Thanks to Oleg Nesterov and Ingo Molnar for the feedback.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
CC: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-03-23 09:22:31 -07:00
..
2009-02-04 14:54:56 +01:00
2009-02-22 10:33:44 -08:00
2009-01-30 22:35:29 +01:00
2009-02-18 22:50:01 -05:00
2008-02-09 23:27:01 -08:00
2009-01-14 14:15:19 +01:00
2009-02-08 10:00:26 -08:00
2009-01-04 15:14:42 -05:00
2008-12-09 02:27:41 -05:00
2009-01-04 15:14:41 -05:00
2009-01-04 15:14:42 -05:00
2009-01-04 15:14:42 -05:00
2008-06-27 18:09:16 +02:00
2008-04-29 08:06:29 -07:00
2009-01-14 14:15:19 +01:00
2008-10-20 08:52:38 -07:00
2008-11-12 17:17:16 -08:00
2009-02-18 15:37:54 -08:00
2009-01-06 15:59:13 -08:00
2008-10-20 08:52:34 -07:00
2009-01-07 11:36:14 -08:00
2009-01-19 02:44:00 +01:00
2008-11-14 10:39:23 +11:00
2009-01-09 13:59:25 -08:00
2008-12-18 13:54:01 +01:00
2009-01-21 18:51:53 +09:00
2008-10-16 11:21:30 -07:00
2009-01-14 14:15:19 +01:00
2009-02-05 13:04:33 +01:00
2008-12-30 16:10:19 -08:00
2009-03-09 13:23:25 -07:00
2008-10-30 11:38:45 -07:00
2008-11-14 10:39:19 +11:00
2009-02-11 18:24:08 +01:00
2009-01-30 22:35:34 +01:00
2009-02-05 13:04:33 +01:00
2009-01-14 21:38:20 +01:00
2008-10-20 08:52:34 -07:00
2008-07-28 14:37:38 +02:00
2008-12-25 09:31:28 +01:00
2009-02-22 10:33:44 -08:00
2007-07-16 09:05:50 -07:00
2008-10-06 13:50:59 -05:00
2009-01-06 15:59:27 -08:00
2009-01-16 14:32:17 -05:00
2009-01-06 10:44:31 -08:00
2008-11-16 09:01:36 +01:00
2008-12-10 08:01:54 -08:00
2008-08-13 12:55:10 +02:00
2008-10-20 15:43:10 +02:00
2008-12-30 16:10:19 -08:00
2009-02-21 14:17:17 -08:00
2008-11-16 09:52:03 +01:00
2009-03-18 09:31:21 +10:30
2008-05-16 16:53:35 +02:00
2008-11-24 10:00:28 +01:00
2008-11-26 08:22:50 +01:00
2009-01-08 08:31:02 -08:00
2008-11-24 18:57:41 -05:00
2009-01-06 15:59:12 -08:00
2008-10-23 12:09:00 -07:00
2008-09-02 19:21:38 -07:00
2009-01-08 08:31:12 -08:00
2008-09-02 19:21:40 -07:00
2009-02-13 13:04:05 +01:00
2009-01-14 14:15:20 +01:00
2009-02-21 14:17:18 -08:00
2009-02-10 00:50:37 +01:00
2009-01-14 14:15:29 +01:00
2009-02-26 04:08:14 +01:00
2009-02-26 04:08:14 +01:00
2008-12-18 21:56:04 +01:00
2009-02-26 04:08:14 +01:00
2009-01-07 23:36:25 +01:00
2008-12-18 21:56:04 +01:00
2009-02-26 04:08:14 +01:00
2009-01-18 20:29:35 +01:00
2009-01-08 08:31:05 -08:00
2009-01-15 16:39:38 -08:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:41 -08:00
2008-07-21 21:55:02 -07:00
2008-09-05 21:35:13 -07:00
2007-12-18 15:21:13 +01:00
2008-12-31 09:53:21 +01:00
2009-01-06 11:07:15 +01:00
2008-11-24 17:52:22 +01:00
2009-01-11 02:40:32 +01:00
2009-02-11 14:43:35 +01:00
2008-11-05 10:30:14 +01:00
2008-10-22 10:01:52 +02:00
2009-02-01 10:49:52 +01:00
2009-02-05 13:04:33 +01:00
2009-02-27 11:11:53 +01:00
2009-03-02 15:41:30 -08:00
2008-08-05 14:33:47 -07:00
2009-03-23 09:22:31 -07:00
2009-01-30 18:31:08 +01:00
2009-03-04 22:08:45 +01:00
2009-01-14 11:48:07 +01:00
2008-08-13 13:56:51 +02:00
2008-02-06 10:41:02 -08:00
2008-12-25 11:44:43 +01:00
2009-01-05 08:40:14 +10:30
2009-01-14 14:15:16 +01:00
2009-02-27 11:11:53 +01:00
2008-10-30 18:30:09 +11:00
2009-02-11 14:25:35 -08:00
2009-01-01 10:12:28 +10:30
2009-01-06 15:59:20 -08:00
2009-01-14 14:15:18 +01:00
2008-05-02 16:18:42 -07:00
2009-01-14 14:15:29 +01:00
2008-11-16 09:52:03 +01:00
2009-03-09 08:13:35 -07:00
2009-01-14 14:15:26 +01:00
2009-01-12 16:04:37 +01:00
2009-02-27 16:26:21 -08:00
2009-03-10 15:55:11 -07:00
2008-10-16 11:21:47 -07:00
2008-08-23 12:14:12 -07:00
2009-02-05 12:56:48 -08:00
2009-01-19 22:36:07 +01:00