aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2008-11-03 20:14:38 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-03 20:14:38 -0500
commit24f8b2385e03a4f4c8dac513d03b5eaa475822b9 (patch)
tree28ed1f956f3f140cf813f25ac166ad9d3a0cd2ab
parentb9ac99855dcc0316ba2feee2b0d3e578f8315b75 (diff)
net: increase receive packet quantum
This patch gets about 1.25% back on tbench regression. My change to NAPI for multiqueue support changed the time limit on network receive processing. Under sustained loads like tbench, this can cause the receiver to reschedule prematurely. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/core/dev.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 3a2b8be9e67b..8f9d3b38a44b 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2373,7 +2373,7 @@ EXPORT_SYMBOL(__napi_schedule);
2373static void net_rx_action(struct softirq_action *h) 2373static void net_rx_action(struct softirq_action *h)
2374{ 2374{
2375 struct list_head *list = &__get_cpu_var(softnet_data).poll_list; 2375 struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
2376 unsigned long start_time = jiffies; 2376 unsigned long time_limit = jiffies + 2;
2377 int budget = netdev_budget; 2377 int budget = netdev_budget;
2378 void *have; 2378 void *have;
2379 2379
@@ -2384,13 +2384,10 @@ static void net_rx_action(struct softirq_action *h)
2384 int work, weight; 2384 int work, weight;
2385 2385
2386 /* If softirq window is exhuasted then punt. 2386 /* If softirq window is exhuasted then punt.
2387 * 2387 * Allow this to run for 2 jiffies since which will allow
2388 * Note that this is a slight policy change from the 2388 * an average latency of 1.5/HZ.
2389 * previous NAPI code, which would allow up to 2
2390 * jiffies to pass before breaking out. The test
2391 * used to be "jiffies - start_time > 1".
2392 */ 2389 */
2393 if (unlikely(budget <= 0 || jiffies != start_time)) 2390 if (unlikely(budget <= 0 || time_after(jiffies, time_limit)))
2394 goto softnet_break; 2391 goto softnet_break;
2395 2392
2396 local_irq_enable(); 2393 local_irq_enable();