BUG 2676 : Add some tuning parameters to improve performance of CDS 36/15536/1
authorMoiz Raja <moraja@cisco.com>
Fri, 20 Feb 2015 11:20:38 +0000 (03:20 -0800)
committerMoiz Raja <moraja@cisco.com>
Fri, 20 Feb 2015 11:20:38 +0000 (03:20 -0800)
Added two parameters,
- throughput = 1 this is to make the dispatcher fair, which helps in preventing
  actor starvation
- SingleConsumerOnlyUnboundedMailbox which is a more efficient and recommended
  Mailbox to use in our case

I've tested both these settings and they seem to work pretty well and do not
contribute to destabilization

Change-Id: I5072f7dad7ad862eaafaada3e88d78600fb3665d
Signed-off-by: Moiz Raja <moraja@cisco.com>
opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/akka.conf

index 9da6a3b5a41a025fd1a3ffcf30d42789701a6bc1..e72f4b2675eb886226ad660204fe706513937094 100644 (file)
@@ -13,17 +13,27 @@ odl-cluster-data {
     loggers = ["akka.event.slf4j.Slf4jLogger"]
 
     actor {
-
       provider = "akka.cluster.ClusterActorRefProvider"
       serializers {
-                java = "akka.serialization.JavaSerializer"
-                proto = "akka.remote.serialization.ProtobufSerializer"
-              }
+        java = "akka.serialization.JavaSerializer"
+        proto = "akka.remote.serialization.ProtobufSerializer"
+      }
+
+      serialization-bindings {
+        "com.google.protobuf.Message" = proto
+      }
 
-              serialization-bindings {
-                  "com.google.protobuf.Message" = proto
+      default-dispatcher {
+        # Setting throughput to 1 makes the dispatcher fair. It processes 1 message from
+        # the mailbox before moving on to the next mailbox
+        throughput = 1
+      }
 
-              }
+      default-mailbox {
+        # When not using a BalancingDispatcher it is recommended that we use the SingleConsumerOnlyUnboundedMailbox
+        # as it is the most efficient for multiple producer/single consumer use cases
+        mailbox-type="akka.dispatch.SingleConsumerOnlyUnboundedMailbox"
+      }
     }
     remote {
       log-remote-lifecycle-events = off