From ad9e3074f2949a0ea604bc191109fa0ad7b8e2e4 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 16 Oct 2017 14:27:10 +0200 Subject: Updated the information we collect for dummyresourcewritebenchmark --- hawd_defs/dummy_write_in_process | 11 ++++-- hawd_defs/dummy_write_in_process_summary | 10 ++++++ tests/dummyresourcebenchmark.cpp | 8 ----- tests/dummyresourcewritebenchmark.cpp | 57 ++++++++++++++------------------ 4 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 hawd_defs/dummy_write_in_process_summary diff --git a/hawd_defs/dummy_write_in_process b/hawd_defs/dummy_write_in_process index 5f0a3e6..548ff95 100644 --- a/hawd_defs/dummy_write_in_process +++ b/hawd_defs/dummy_write_in_process @@ -1,9 +1,16 @@ { "name": "In process write using DummyResource", - "description": "Measures performance of the DummyResource class", + "description": "Measures performance, memory usage and disk usage of writing to the db.", "columns": [ { "name": "rows", "type": "int" }, { "name": "append", "type": "float", "unit": "ops/ms" }, - { "name": "total", "type": "float", "unit": "ops/ms" } + { "name": "total", "type": "float", "unit": "ops/ms" }, + { "name": "onDisk", "type": "float", "unit": "kb" }, + { "name": "bufferSize", "type": "float", "unit": "kb" }, + { "name": "writeAmplification", "type": "float"}, + { "name": "rss", "type": "int", "unit": "kb" }, + { "name": "peakRss", "type": "int", "unit": "kb" }, + { "name": "rssGrowthPerEntity", "type": "int", "unit": "byte" }, + { "name": "rssWithoutDb", "type": "int", "unit": "kb" } ] } diff --git a/hawd_defs/dummy_write_in_process_summary b/hawd_defs/dummy_write_in_process_summary new file mode 100644 index 0000000..878a386 --- /dev/null +++ b/hawd_defs/dummy_write_in_process_summary @@ -0,0 +1,10 @@ +{ + "name": "Summary values for in process write using DummyResource", + "description": "Summary values that should remain stable over dataset sized.", + "columns": [ + { "name": "rssStandardDeviation", "type": "float", "unit": "SD" }, + { "name": "rssMaxDifference", "type": "float", "unit": "byte" }, + { "name": "timeStandardDeviation", "type": "float", "unit": "SD" }, + { "name": "timeMaxDifference", "type": "float", "unit": "ms" } + ] +} diff --git a/tests/dummyresourcebenchmark.cpp b/tests/dummyresourcebenchmark.cpp index 79c0c96..868c5aa 100644 --- a/tests/dummyresourcebenchmark.cpp +++ b/tests/dummyresourcebenchmark.cpp @@ -196,14 +196,6 @@ private slots: auto allProcessedTime = time.elapsed(); - HAWD::Dataset dataset("dummy_write_in_process", m_hawdState); - HAWD::Dataset::Row row = dataset.row(); - - row.setValue("rows", num); - row.setValue("append", (qreal)num / appendTime); - row.setValue("total", (qreal)num / allProcessedTime); - dataset.insertRow(row); - HAWD::Formatter::print(dataset); // Print memory layout, RSS is what is in memory // std::system("exec pmap -x \"$PPID\""); diff --git a/tests/dummyresourcewritebenchmark.cpp b/tests/dummyresourcewritebenchmark.cpp index 9815f96..28ca408 100644 --- a/tests/dummyresourcewritebenchmark.cpp +++ b/tests/dummyresourcewritebenchmark.cpp @@ -77,7 +77,6 @@ class DummyResourceWriteBenchmark : public QObject { DummyResource::removeFromDisk("sink.dummy.instance1"); - QTime time; time.start(); DummyResource resource(Sink::ResourceContext{"sink.dummy.instance1", "sink.dummy", Sink::AdaptorFactoryRegistry::instance().getFactories("sink.dummy")}); @@ -128,14 +127,20 @@ class DummyResourceWriteBenchmark : public QObject // so it doesn't look like that memory is being duplicated. QVERIFY(rssGrowthPerEntity < 2500); - // HAWD::Dataset dataset("dummy_write_in_process", m_hawdState); - // HAWD::Dataset::Row row = dataset.row(); - // - // row.setValue("rows", num); - // row.setValue("append", (qreal)num/appendTime); - // row.setValue("total", (qreal)num/allProcessedTime); - // dataset.insertRow(row); - // HAWD::Formatter::print(dataset); + HAWD::Dataset dataset("dummy_write_in_process", m_hawdState); + HAWD::Dataset::Row row = dataset.row(); + row.setValue("rows", num); + row.setValue("append", (qreal)num/appendTime); + row.setValue("total", (qreal)num/allProcessedTime); + row.setValue("onDisk", onDisk / 1024); + row.setValue("bufferSize", bufferSizeTotal / 1024); + row.setValue("writeAmplification", writeAmplification); + row.setValue("rss", QVariant::fromValue(finalRss / 1024)); + row.setValue("peakRss", QVariant::fromValue(peakRss / 1024)); + row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity)); + row.setValue("rssWithoutDb", rssWithoutDb / 1024); + dataset.insertRow(row); + HAWD::Formatter::print(dataset); // Print memory layout, RSS is what is in memory // std::system("exec pmap -x \"$PPID\""); @@ -154,42 +159,28 @@ private slots: { } - void test1k() + void runBenchmarks() { writeInProcess(1000); - } - - void test2k() - { writeInProcess(2000); - } - - void test5k() - { writeInProcess(5000); + writeInProcess(20000); } - // void test20k() - // { - // writeInProcess(20000); - // } - // void ensureUsedMemoryRemainsStable() { auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity)); auto timeStandardDeviation = sqrt(variance(mTimePerEntity)); - std::cout << "Rss standard deviation " << rssStandardDeviation << std::endl; - std::cout << "Rss max difference [byte]" << maxDifference(mRssGrowthPerEntity) << std::endl; - std::cout << "Time standard deviation " << timeStandardDeviation << std::endl; - std::cout << "Time max difference [ms]" << maxDifference(mTimePerEntity) << std::endl; - QVERIFY(rssStandardDeviation < 1000); - QVERIFY(timeStandardDeviation < 1); + HAWD::Dataset dataset("dummy_write_in_process_summary", m_hawdState); + HAWD::Dataset::Row row = dataset.row(); + row.setValue("rssStandardDeviation", rssStandardDeviation); + row.setValue("rssMaxDifference", maxDifference(mRssGrowthPerEntity)); + row.setValue("timeStandardDeviation", timeStandardDeviation); + row.setValue("timeMaxDifference", maxDifference(mTimePerEntity)); + dataset.insertRow(row); + HAWD::Formatter::print(dataset); } - void getFreePages() - { - std::system(QString("mdb_stat %1/%2 -ff").arg(Sink::storageLocation()).arg("sink.dummy.instance1").toLatin1().constData()); - } // This allows to run individual parts without doing a cleanup, but still cleaning up normally void testCleanupForCompleteTest() -- cgit v1.2.3