Eric Dumazet
27b75c95f1
net: avoid RCU for NOCACHE dst
...
There is no point using RCU for dst we allocate for a very short time
(used once).
Change dst_release() to take DST_NOCACHE into account, but also change
skb_dst_set_noref() to force a refcount increment for such dst.
This is a _huge_ gain, because we dont waste memory to store xx thousand
of dsts. Instead of queueing them to RCU, we can free them instantly.
CPU caches can stay hot, re-using same memory blocks to hold temporary
dsts.
Note : remove unneeded smp_mb__before_atomic_dec(); in dst_release(),
since atomic_dec_return() implies a full memory barrier.
Stress test, 160.000.000 udp frames sent, IP route cache disabled
(DDOS).
Before:
real 0m38.091s
user 0m13.189s
sys 7m53.018s
After:
real 0m29.946s
user 0m12.157s
sys 7m40.605s
For reference, if IP route cache was enabled :
real 0m32.030s
user 0m10.521s
sys 8m15.243s
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com >
Signed-off-by: David S. Miller <davem@davemloft.net >
2010-10-20 03:02:23 -07:00
..
2010-08-17 22:15:09 +01:00
2010-08-14 22:26:51 +02:00
2010-10-18 15:16:08 +02:00
2010-08-14 22:26:51 +02:00
2010-09-09 18:57:24 -07:00
2010-08-12 10:01:30 -07:00
2010-08-24 14:57:09 -07:00
2010-10-12 12:44:51 -03:00
2010-08-23 18:30:30 -07:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-12 06:38:24 +10:00
2010-08-11 11:38:01 +01:00
2010-10-06 19:39:31 -07:00
2010-08-24 16:28:11 -04:00
2010-09-12 19:55:25 -04:00
2010-08-20 01:42:59 -07:00
2010-08-24 14:48:10 -07:00
2010-08-28 13:55:31 -07:00
2010-08-24 13:44:40 -07:00
2010-09-23 14:33:39 -07:00
2010-08-12 08:43:30 -07:00
2010-08-17 18:07:43 -07:00
2010-08-12 08:43:30 -07:00
2010-08-12 08:43:30 -07:00
2010-08-18 01:09:01 -04:00
2010-09-09 18:57:23 -07:00
2010-09-14 16:08:45 -07:00
2010-09-30 21:19:22 -04:00
2010-08-11 00:29:47 -04:00
2010-09-21 12:14:25 +02:00
2010-08-12 04:14:10 +01:00
2010-08-12 04:14:05 +01:00
2010-09-22 17:22:38 -07:00
2010-09-22 15:29:32 -07:00
2010-08-23 13:52:19 +02:00
2010-09-23 14:33:39 -07:00
2010-09-21 14:57:58 -07:00
2010-08-27 19:54:09 -04:00
2010-08-18 08:35:46 -04:00
2010-09-21 17:27:44 -07:00
2010-08-22 20:28:16 -04:00
2010-08-12 14:23:04 -07:00
2010-09-01 08:55:24 -06:00
2010-08-11 09:23:22 +02:00
2010-08-11 09:22:46 +02:00
2010-08-11 18:21:02 +02:00
2010-08-11 18:21:02 +02:00
2010-10-11 15:04:21 -04:00
2010-10-05 20:26:58 -07:00
2010-08-24 14:46:53 -07:00
2010-08-22 21:15:39 -07:00
2010-08-22 21:15:39 -07:00
2010-08-16 21:06:25 -07:00
2010-09-21 18:04:47 -07:00
2010-08-22 21:03:33 -07:00
2010-08-29 21:57:55 -07:00
2010-08-19 17:16:23 -07:00
2010-09-30 21:16:05 -07:00
2010-09-07 11:16:43 +01:00
2010-09-05 14:26:15 +02:00
2010-08-22 21:15:39 -07:00
2010-08-12 11:27:58 +02:00
2010-09-08 18:16:52 -07:00
2010-08-12 09:51:35 -07:00
2010-09-09 18:57:22 -07:00
2010-08-23 18:12:46 -07:00
2010-08-23 18:12:46 -07:00
2010-09-09 18:57:24 -07:00
2010-09-09 09:09:43 -07:00
2010-09-09 22:31:55 -04:00
2010-08-11 08:59:19 -07:00
2010-08-21 00:37:40 -07:00
2010-08-21 08:49:21 -07:00
2010-09-09 09:05:06 -07:00
2010-09-09 18:57:25 -07:00
2010-10-05 11:29:27 -07:00
2010-08-11 23:04:41 +09:30
2010-08-11 00:29:47 -04:00
2010-10-03 21:50:53 -07:00
2010-09-03 08:19:51 +02:00
2010-08-22 21:15:39 -07:00
2010-08-22 21:15:39 -07:00
2010-10-20 02:27:59 -07:00
2010-09-22 13:21:05 -07:00
2010-10-18 08:32:07 -07:00
2010-10-11 15:04:20 -04:00
2010-08-11 08:59:19 -07:00
2010-08-12 10:15:10 -07:00
2010-08-11 00:29:47 -04:00
2010-10-06 19:39:31 -07:00
2010-08-13 16:19:59 -07:00
2010-10-13 14:40:34 -07:00
2010-09-02 10:12:05 -07:00
2010-08-21 23:40:14 -07:00
2010-08-11 09:21:15 +02:00
2010-08-18 23:30:42 -07:00
2010-09-09 16:08:51 +02:00
2010-09-23 08:25:17 -07:00
2010-09-08 18:16:55 -07:00
2010-08-22 21:15:39 -07:00
2010-08-12 10:15:10 -07:00
2010-10-05 00:29:48 -07:00
2010-08-17 18:07:43 -07:00
2010-09-08 15:04:10 +02:00
2010-09-03 17:29:04 -07:00
2010-09-03 17:29:04 -07:00
2010-10-20 03:02:23 -07:00
2010-08-11 08:59:21 -07:00
2010-08-11 08:59:21 -07:00
2010-08-22 10:08:52 -07:00
2010-09-27 20:24:54 -07:00
2010-09-24 21:27:41 -07:00
2010-09-09 18:57:25 -07:00
2010-08-17 18:07:43 -07:00
2010-08-23 18:12:46 -07:00
2010-08-21 00:34:45 -07:00
2010-08-11 08:59:22 -07:00
2010-08-30 13:23:33 -07:00
2010-08-13 16:53:13 -07:00
2010-08-18 08:35:47 -04:00
2010-08-21 00:37:40 -07:00
2010-08-10 14:35:44 -07:00
2010-08-27 09:10:44 +10:00
2010-08-11 08:59:02 -07:00
2010-08-12 09:09:41 -07:00
2010-09-09 18:57:25 -07:00
2010-10-05 11:47:18 -07:00
2010-10-13 15:45:21 -04:00
2010-09-30 06:01:56 +03:00
2010-09-13 10:26:52 +02:00
2010-08-12 08:43:29 -07:00