From: Simon Horman Date: Tue, 12 Jul 2011 06:52:44 +0000 (+0900) Subject: datapath: An expanded table should be larger than its predecessor X-Git-Tag: v1.1.2~15 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=bd6ce3f24b740fc946fe88baa0619c945f02b434 datapath: An expanded table should be larger than its predecessor This resolves what appears to be a think-o in tbl_expand() * Old Logic: Always create tables with TBL_MIN_BUCKETS buckets * New Logic: Create tables twice as big as their predecessor When sending 10,000 flows through ovs-vswitchd: * Old Logic: CPU bound in tbl_lookup(), significant packet loss * New Logic: ~10% of one core used, negligible packet loss Tested with an Intel E5520 @ 2.27GHz, flows from an ethernet device to to a dummy interface with no address configured. Signed-off-by: Simon Horman Signed-off-by: Jesse Gross --- diff --git a/datapath/table.c b/datapath/table.c index 47fa01690..0eccab04d 100644 --- a/datapath/table.c +++ b/datapath/table.c @@ -337,7 +337,7 @@ struct tbl *tbl_expand(struct tbl *table) } err = -ENOMEM; - new_table = tbl_create(TBL_MIN_BUCKETS); + new_table = tbl_create(n_buckets); if (!new_table) goto error;