BUG-650: remove executor abstraction 01/11401/17
authorRobert Varga <rovarga@cisco.com>
Sat, 20 Sep 2014 10:07:05 +0000 (12:07 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 20 Nov 2014 11:37:48 +0000 (11:37 +0000)
commit6098a157bd462484c311c8871507deeb3fb631f1
tree76175f488277ecdffa4f619c558242b01ee3f3d6
parent7a6f5d2153828ded60de897bff66ae6d034770bf
BUG-650: remove executor abstraction

This patch removes sameThreadExecutor from the commit path, eliminating
associated overhead. Relevant benchmarks show improvement pretty much
across the board:

BEFORE                                                            millis        error
write100KSingleNodeWithOneInnerItemInCommitPerWriteBenchmark    2213.735       77.597
write100KSingleNodeWithOneInnerItemInOneCommitBenchmark          171.524        2.289
write10KSingleNodeWithTenInnerItemsInCommitPerWriteBenchmark     164.282        1.391
write10KSingleNodeWithTenInnerItemsInOneCommitBenchmark           14.161        0.196
write50KSingleNodeWithTwoInnerItemsInCommitPerWriteBenchmark     982.697       29.397
write50KSingleNodeWithTwoInnerItemsInOneCommitBenchmark           93.233        2.174

AFTER                                                             millis        error   delta
write100KSingleNodeWithOneInnerItemInCommitPerWriteBenchmark    2138.900       75.844   -3.4%
write100KSingleNodeWithOneInnerItemInOneCommitBenchmark          177.839        3.997   +3.5%
write10KSingleNodeWithTenInnerItemsInCommitPerWriteBenchmark     158.666        1.090   -3.5%
write10KSingleNodeWithTenInnerItemsInOneCommitBenchmark           13.022        0.105   -8.0%
write50KSingleNodeWithTwoInnerItemsInCommitPerWriteBenchmark     935.490       30.395   -4.8%
write50KSingleNodeWithTwoInnerItemsInOneCommitBenchmark           89.907        1.204   -3.6%

Furthermore it cleans up and marks FIXMEs for defunct statistics. These
will need to be replaced with implementation which does not assume
underlying implementation.

Change-Id: I01c51462a8529a2f874ecd2f9af05faba503bc58
Signed-off-by: Robert Varga <rovarga@cisco.com>
27 files changed:
opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryBrokerWriteTransactionBenchmark.java
opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryDataStoreWithExecutorServiceBenchmark.java [deleted file]
opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryDataStoreWithSameThreadedExecutorBenchmark.java
opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryDataStoreWriteTransactionBenchmark.java
opendaylight/md-sal/forwardingrules-manager/src/test/java/test/mock/util/DataBrokerTestCustomizer.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/DataBrokerTestCustomizer.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardMBeanFactory.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModificationTest.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMBrokerPerformanceTest.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMBrokerTest.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMTransactionChainTest.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/config/yang/inmemory_datastore_provider/InMemoryConfigDataStoreProviderModule.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/config/yang/inmemory_datastore_provider/InMemoryOperationalDataStoreProviderModule.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStoreFactory.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/jmx/InMemoryDataStoreStats.java
opendaylight/md-sal/sal-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/AbstractDataChangeListenerTest.java
opendaylight/md-sal/sal-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java
opendaylight/md-sal/sal-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaUpdateForTransactionTest.java
opendaylight/md-sal/statistics-manager/src/test/java/test/mock/util/DataBrokerTestCustomizer.java

©2013 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a registered trademark of The OpenDaylight Project, Inc.
Linux Foundation and OpenDaylight are registered trademarks of the Linux Foundation.
Linux is a registered trademark of Linus Torvalds.