BUG 2734 : Use the 95th percentile number to determine backpressure 35/15535/1
authorMoiz Raja <moraja@cisco.com>
Fri, 20 Feb 2015 10:53:20 +0000 (02:53 -0800)
committerMoiz Raja <moraja@cisco.com>
Fri, 20 Feb 2015 10:53:20 +0000 (02:53 -0800)
When running tests with OpenFlow I see the following transaction completion
times consistently for 127 and 255 switches with statistics on.

50% - 5-6 ms
75% - 7-8 ms
95% - 20-60 ms
98% - 100-160 ms

By using the 95th percentile number to determine transaction creation backpressure
we can safely increase our throughput without causing timeouts due to outliers.

Change-Id: I0d9739b3045afb389583f2dd18ac431215a28f84
Signed-off-by: Moiz Raja <moraja@cisco.com>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java

index 4f472266c1f56acbd8fc531ae7189f1ae91951b4..c51ea80726e54d9cf656e193ca8521d242206c76 100644 (file)
@@ -342,7 +342,7 @@ public class ThreePhaseCommitCohortProxy implements DOMStoreThreePhaseCommitCoho
             timerContext.stop();
 
             Snapshot timerSnapshot = commitTimer.getSnapshot();
-            double allowedLatencyInNanos = timerSnapshot.get98thPercentile();
+            double allowedLatencyInNanos = timerSnapshot.get95thPercentile();
 
             long commitTimeoutInSeconds = actorContext.getDatastoreContext()
                     .getShardTransactionCommitTimeoutInSeconds();
index d2396e0524f340844ea5f7c0e35dfd6cad0b4806..b013515f2595950cba669ac08dfdb1a8eefe37fa 100644 (file)
@@ -71,7 +71,7 @@ public class ThreePhaseCommitCohortProxyTest extends AbstractActorTest {
         doReturn(commitTimer).when(actorContext).getOperationTimer("commit");
         doReturn(commitTimerContext).when(commitTimer).time();
         doReturn(commitSnapshot).when(commitTimer).getSnapshot();
-        doReturn(TimeUnit.MILLISECONDS.toNanos(2000) * 1.0).when(commitSnapshot).get98thPercentile();
+        doReturn(TimeUnit.MILLISECONDS.toNanos(2000) * 1.0).when(commitSnapshot).get95thPercentile();
         doReturn(10.0).when(actorContext).getTxCreationLimit();
     }