Before this patch, when ofproto-dpif decided that a particular flow miss needed a facet, it would do action translation multiple times. Once in subfacet_make_actions(), and once per packet in subfacet_update_stats(). In the common case (once per miss), this would double the amount of work required in xlate_actions().
The call to facet_push_stats() in subfacet_update_stats() is unnecessary. If the packets are simply accounted to the facet, they will eventually be pushed to the relevant rules in update_stats() or when the facet is removed. Removing the unnecessary step gives us a 20% improvement of the netperf TCP_CRR benchmark with the complex flow tables installed by our controller. Signed-off-by: Ethan Jackson <et...@nicira.com> --- ofproto/ofproto-dpif.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index d1b9f34..d0fd179 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -5269,7 +5269,6 @@ subfacet_update_stats(struct subfacet *subfacet, facet->packet_count += stats->n_packets; facet->byte_count += stats->n_bytes; facet->tcp_flags |= stats->tcp_flags; - facet_push_stats(facet); netflow_flow_update_flags(&facet->nf_flow, stats->tcp_flags); } } -- 1.7.9.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev