Eric Dumazet
0197aa38df
ipv4: rcu conversion in ip_route_output_slow
ip_route_output_slow() is enclosed in an rcu_read_lock() protected
section, so that no references are taken/released on device, thanks to
__ip_dev_find() & dev_get_by_index_rcu()
Tested with ip route cache disabled, and a stress test :
Before patch:
elapsed time :
real 1m38.347s
user 0m11.909s
sys 23m51.501s
Profile:
13788.00 22.7% ip_route_output_slow [kernel]
7875.00 13.0% dst_destroy [kernel]
3925.00 6.5% fib_semantic_match [kernel]
3144.00 5.2% fib_rules_lookup [kernel]
3061.00 5.0% dst_alloc [kernel]
2276.00 3.7% rt_set_nexthop [kernel]
1762.00 2.9% fib_table_lookup [kernel]
1538.00 2.5% _raw_read_lock [kernel]
1358.00 2.2% ip_output [kernel]
After patch:
real 1m28.808s
user 0m13.245s
sys 20m37.293s
10950.00 17.2% ip_route_output_slow [kernel]
10726.00 16.9% dst_destroy [kernel]
5170.00 8.1% fib_semantic_match [kernel]
3937.00 6.2% dst_alloc [kernel]
3635.00 5.7% rt_set_nexthop [kernel]
2900.00 4.6% fib_rules_lookup [kernel]
2240.00 3.5% fib_table_lookup [kernel]
1427.00 2.2% _raw_read_lock [kernel]
1157.00 1.8% kmem_cache_alloc [kernel]
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-09-30 21:16:06 -07:00
..
2010-09-27 01:03:03 -07:00
2010-08-20 00:50:16 -07:00
2010-03-30 22:02:32 +09:00
2010-09-29 19:45:35 -07:00
2010-05-17 23:23:14 -07:00
2010-09-23 14:33:39 -07:00
2010-09-15 22:06:05 -07:00
2010-02-22 16:20:22 -08:00
2010-09-30 21:16:05 -07:00
2010-03-30 22:02:32 +09:00
2010-04-26 16:13:54 +02:00
2010-03-30 22:02:32 +09:00
2010-09-10 12:32:02 -07:00
2010-08-21 23:05:39 -07:00
2010-08-19 00:08:30 -07:00
2010-09-13 12:56:51 -07:00
2010-07-12 12:57:54 -07:00
2010-09-23 14:33:39 -07:00
2010-07-12 12:57:54 -07:00
2010-07-12 12:57:54 -07:00
2010-03-30 22:02:32 +09:00
2010-06-16 11:55:39 -07:00
2010-06-10 23:31:35 -07:00
2010-09-23 14:33:39 -07:00
2010-09-29 23:35:10 -07:00
2010-06-28 23:24:29 -07:00
2010-09-19 12:42:34 -07:00
2010-09-27 01:03:03 -07:00
2010-09-13 19:57:23 -07:00
2010-02-22 16:20:22 -08:00
2010-06-02 07:05:03 -07:00
2010-09-29 13:25:44 -07:00
2010-09-15 22:06:05 -07:00
2010-09-09 22:27:33 -07:00
2010-08-21 23:05:39 -07:00
2010-06-15 17:31:06 +02:00
2010-06-30 13:31:19 -07:00
2010-09-08 21:31:35 -07:00
2010-08-19 00:08:30 -07:00
2010-09-30 21:16:06 -07:00
2010-06-26 22:00:03 -07:00
2010-05-15 23:28:40 -07:00
2010-08-27 19:31:56 -07:00
2010-06-02 07:15:48 -07:00
2010-09-29 19:45:36 -07:00
2010-08-31 13:37:07 -07:00
2010-09-23 14:33:39 -07:00
2010-09-23 14:33:39 -07:00
2010-03-30 22:02:32 +09:00
2010-09-09 22:27:33 -07:00
2010-09-23 14:33:39 -07:00
2010-09-27 01:03:03 -07:00
2010-09-09 15:02:39 -07:00
2010-09-09 22:27:33 -07:00
2010-07-12 12:57:54 -07:00
2010-07-12 12:57:54 -07:00
2010-03-30 22:02:32 +09:00
2010-03-25 16:00:30 +01:00
2010-09-22 20:25:48 -07:00
2010-09-20 11:11:38 -07:00
2010-08-30 13:50:45 -07:00