Here's an incremental.  Also I've changed the commit message to the following:

ofproto-dpif: More responsive average subfacet statistics.

Before this patch, statistics about subfacet average life span,
and count in the datapath, were calculated over the entire lifetime
of the ofproto.  Furthermore, the subfacet lifespan was only
updated when a subfacet was removed from the datapath causing long
lived subfacets to be ignored.  It's far more useful to know these
numbers averaged over all subfacets in the recent past.  This patch
changes the code to implement an exponentially weighted moving
average updated every time statistics are pulled from the datapath.

Signed-off-by: Ethan Jackson <et...@nicira.com>

---
 ofproto/ofproto-dpif.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index ee40cf3..f8c0abc 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -4318,11 +4318,12 @@ expire(struct dpif_backer *backer)
             }
             avg_subfacet_life_span /= hmap_count(&ofproto->subfacets);
         }
-        ofproto->avg_subfacet_life_span =
-            (ofproto->avg_subfacet_life_span + avg_subfacet_life_span) / 2;
+        ofproto->avg_subfacet_life_span += avg_subfacet_life_span;
+        ofproto->avg_subfacet_life_span /= 2;
 
         ofproto->avg_n_subfacet += hmap_count(&ofproto->subfacets);
         ofproto->avg_n_subfacet /= 2;
+
         ofproto->max_n_subfacet = MAX(ofproto->max_n_subfacet,
                                       hmap_count(&ofproto->subfacets));
 
@@ -8298,8 +8299,8 @@ show_dp_format(const struct ofproto_dpif *ofproto, struct 
ds *ds)
     ds_put_format(ds,
                   "\tlookups: hit:%"PRIu64" missed:%"PRIu64"\n",
                   ofproto->n_hit, ofproto->n_missed);
-    ds_put_format(ds, "\tflows: cur: %zu, avg: %d, max: %d,"
-                  " life span: %llu(ms)\n",
+    ds_put_format(ds, "\tflows: cur: %zu, avg: %u, max: %d,"
+                  " life span: %lld(ms)\n",
                   hmap_count(&ofproto->subfacets),
                   ofproto->avg_n_subfacet,
                   ofproto->max_n_subfacet,
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to