Calvin Owens
61ea92b948
ksoftirqd: Enable IRQs and call cond_resched() before poking RCU
...
commit 28423ad283 upstream.
While debugging an issue with excessive softirq usage, I encountered the
following note in commit 3e339b5dae ("softirq: Use hotplug thread
infrastructure"):
[ paulmck: Call rcu_note_context_switch() with interrupts enabled. ]
...but despite this note, the patch still calls RCU with IRQs disabled.
This seemingly innocuous change caused a significant regression in softirq
CPU usage on the sending side of a large TCP transfer (~1 GB/s): when
introducing 0.01% packet loss, the softirq usage would jump to around 25%,
spiking as high as 50%. Before the change, the usage would never exceed 5%.
Moving the call to rcu_note_context_switch() after the cond_sched() call,
as it was originally before the hotplug patch, completely eliminated this
problem.
Signed-off-by: Calvin Owens <calvinowens@fb.com >
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Signed-off-by: Mike Galbraith <mgalbraith@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2015-05-06 21:56:27 +02:00
..
2013-11-29 11:11:42 -08:00
2015-03-06 14:40:52 -08:00
2015-04-13 14:02:12 +02:00
2013-01-11 11:39:33 -08:00
2014-06-30 20:09:45 -07:00
2015-03-18 13:22:28 +01:00
2014-08-07 14:30:26 -07:00
2015-03-06 14:40:52 -08:00
2015-05-06 21:56:21 +02:00
2013-04-22 07:09:06 -07:00
2013-05-04 14:57:58 -04:00
2013-03-12 13:59:14 -07:00
2014-11-21 09:22:52 -08:00
2013-01-11 14:54:55 -08:00
2014-09-17 09:03:57 -07:00
2013-12-04 10:57:03 -08:00
2013-05-24 16:22:52 -07:00
2014-06-16 13:42:53 -07:00
2011-03-23 19:46:28 -07:00
2014-09-17 09:03:57 -07:00
2012-11-19 08:13:38 -08:00
2015-04-29 10:34:00 +02:00
2013-05-01 07:21:43 -07:00
2013-05-01 17:29:18 -04:00
2013-06-20 08:18:35 -10:00
2012-05-31 17:49:27 -07:00
2014-06-11 12:03:24 -07:00
2014-07-17 15:58:00 -07:00
2011-11-06 19:44:47 -08:00
2012-12-18 10:55:28 -08:00
2013-01-27 19:23:31 +01:00
2012-03-28 18:30:03 +01:00
2014-10-05 14:54:15 -07:00
2013-04-15 13:25:16 +02:00
2014-10-09 12:18:42 -07:00
2014-11-14 08:47:58 -08:00
2013-02-23 18:50:11 -08:00
2014-06-07 13:25:41 -07:00
2015-01-08 09:58:16 -08:00
2014-06-07 13:25:31 -07:00
2012-04-25 12:39:25 +02:00
2013-02-05 00:48:46 +01:00
2012-04-10 11:00:30 +02:00
2012-08-06 19:00:35 +03:00
2013-04-15 15:17:26 +09:30
2014-10-05 14:54:13 -07:00
2014-07-28 08:00:07 -07:00
2012-03-23 13:18:57 +01:00
2013-12-20 07:45:08 -08:00
2013-05-16 12:01:11 -07:00
2013-05-28 10:37:59 +02:00
2012-12-11 18:10:49 -08:00
2013-04-30 17:04:02 -07:00
2011-10-31 09:20:12 -04:00
2012-05-29 23:28:41 -04:00
2012-10-24 12:39:09 +02:00
2013-05-08 11:51:05 -07:00
2013-05-05 10:58:06 -07:00
2013-03-15 15:09:43 +10:30
2012-12-20 17:40:21 -08:00
2012-12-05 11:27:24 +10:30
2012-10-19 17:30:40 -07:00
2014-11-14 08:47:55 -08:00
2011-10-31 09:20:12 -04:00
2011-04-14 08:52:33 +02:00
2013-04-19 09:33:36 +02:00
2011-04-14 08:52:33 +02:00
2011-10-31 09:20:12 -04:00
2013-05-01 17:29:39 -04:00
2012-12-06 17:16:23 +08:00
2013-04-30 17:04:02 -07:00
2013-03-18 11:40:21 +00:00
2014-04-26 17:15:34 -07:00
2015-01-08 09:58:17 -08:00
2013-04-22 19:59:25 +02:00
2014-11-14 08:48:00 -08:00
2015-04-19 10:10:51 +02:00
2013-05-01 17:29:18 -04:00
2015-05-06 21:56:24 +02:00
2013-06-18 11:32:10 -05:00
2013-01-28 22:06:21 -08:00
2013-01-28 22:25:21 -08:00
2013-01-28 22:06:21 -08:00
2013-01-28 22:25:21 -08:00
2013-02-04 12:18:20 -08:00
2013-05-15 10:41:12 -07:00
2013-05-05 00:16:35 -04:00
2013-06-10 13:37:12 -07:00
2013-06-10 13:37:11 -07:00
2013-05-08 10:13:35 -07:00
2012-12-18 15:02:12 -08:00
2013-04-29 15:54:40 -07:00
2011-01-27 21:13:51 -05:00
2013-02-07 20:51:08 +01:00
2014-07-17 15:58:04 -07:00
2013-04-10 14:48:37 +02:00
2014-07-17 15:58:04 -07:00
2014-07-17 15:58:04 -07:00
2013-03-23 15:53:52 -07:00
2013-03-26 11:07:19 +11:00
2013-04-30 17:04:08 -07:00
2013-05-01 14:08:52 -07:00
2014-09-17 09:03:57 -07:00
2015-02-11 14:48:17 +08:00
2012-08-13 17:01:07 +02:00
2015-05-06 21:56:27 +02:00
2012-03-23 13:18:57 +01:00
2013-02-07 15:19:36 -08:00
2011-10-31 09:20:12 -04:00
2013-02-26 22:25:17 +01:00
2013-05-09 13:46:38 -04:00
2013-06-12 16:29:44 -07:00
2013-05-09 14:53:20 -04:00
2014-06-11 12:03:27 -07:00
2012-09-13 16:47:34 +02:00
2012-10-06 03:05:31 +09:00
2013-04-29 18:28:42 -07:00
2015-01-29 17:40:56 -08:00
2013-02-16 23:17:25 +01:00
2014-06-07 13:25:30 -07:00
2014-05-30 21:52:11 -07:00
2013-01-27 19:23:31 +01:00
2015-01-08 09:58:16 -08:00
2011-10-31 09:20:12 -04:00
2015-01-08 09:58:17 -08:00
2013-02-27 19:10:24 -08:00
2015-01-08 09:58:16 -08:00
2013-02-27 19:10:22 -08:00
2013-05-01 17:29:39 -04:00
2012-12-06 10:39:54 +01:00
2013-03-14 08:24:05 +01:00
2013-04-30 17:04:02 -07:00
2015-03-26 15:00:58 +01:00