summaryrefslogtreecommitdiffstats
path: root/tests/dummyresourcewritebenchmark.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/dummyresourcewritebenchmark.cpp')
-rw-r--r--tests/dummyresourcewritebenchmark.cpp68
1 files changed, 44 insertions, 24 deletions
diff --git a/tests/dummyresourcewritebenchmark.cpp b/tests/dummyresourcewritebenchmark.cpp
index 28ca408..87bb57a 100644
--- a/tests/dummyresourcewritebenchmark.cpp
+++ b/tests/dummyresourcewritebenchmark.cpp
@@ -1,6 +1,7 @@
1#include <QtTest> 1#include <QtTest>
2 2
3#include <QString> 3#include <QString>
4#include <QDateTime>
4 5
5#include <iostream> 6#include <iostream>
6 7
@@ -72,8 +73,9 @@ class DummyResourceWriteBenchmark : public QObject
72 73
73 QList<double> mRssGrowthPerEntity; 74 QList<double> mRssGrowthPerEntity;
74 QList<double> mTimePerEntity; 75 QList<double> mTimePerEntity;
76 QDateTime mTimeStamp{QDateTime::currentDateTimeUtc()};
75 77
76 void writeInProcess(int num) 78 void writeInProcess(int num, const QDateTime &timestamp)
77 { 79 {
78 DummyResource::removeFromDisk("sink.dummy.instance1"); 80 DummyResource::removeFromDisk("sink.dummy.instance1");
79 81
@@ -122,25 +124,42 @@ class DummyResourceWriteBenchmark : public QObject
122 mTimePerEntity << static_cast<double>(allProcessedTime) / static_cast<double>(num); 124 mTimePerEntity << static_cast<double>(allProcessedTime) / static_cast<double>(num);
123 mRssGrowthPerEntity << rssGrowthPerEntity; 125 mRssGrowthPerEntity << rssGrowthPerEntity;
124 126
125 QVERIFY(percentageRssError < 10); 127 {
126 // TODO This is much more than it should it seems, although adding the attachment results in pretty exactly a 1k increase, 128 HAWD::Dataset dataset("dummy_write_perf", m_hawdState);
127 // so it doesn't look like that memory is being duplicated. 129 HAWD::Dataset::Row row = dataset.row();
128 QVERIFY(rssGrowthPerEntity < 2500); 130 row.setValue("rows", num);
131 row.setValue("append", (qreal)num/appendTime);
132 row.setValue("total", (qreal)num/allProcessedTime);
133 row.setTimestamp(timestamp);
134 dataset.insertRow(row);
135 HAWD::Formatter::print(dataset);
136 }
129 137
130 HAWD::Dataset dataset("dummy_write_in_process", m_hawdState); 138 {
131 HAWD::Dataset::Row row = dataset.row(); 139 HAWD::Dataset dataset("dummy_write_memory", m_hawdState);
132 row.setValue("rows", num); 140 HAWD::Dataset::Row row = dataset.row();
133 row.setValue("append", (qreal)num/appendTime); 141 row.setValue("rows", num);
134 row.setValue("total", (qreal)num/allProcessedTime); 142 row.setValue("rss", QVariant::fromValue(finalRss / 1024));
135 row.setValue("onDisk", onDisk / 1024); 143 row.setValue("peakRss", QVariant::fromValue(peakRss / 1024));
136 row.setValue("bufferSize", bufferSizeTotal / 1024); 144 row.setValue("percentagePeakRssError", percentageRssError);
137 row.setValue("writeAmplification", writeAmplification); 145 row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity));
138 row.setValue("rss", QVariant::fromValue(finalRss / 1024)); 146 row.setValue("rssWithoutDb", rssWithoutDb / 1024);
139 row.setValue("peakRss", QVariant::fromValue(peakRss / 1024)); 147 row.setTimestamp(timestamp);
140 row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity)); 148 dataset.insertRow(row);
141 row.setValue("rssWithoutDb", rssWithoutDb / 1024); 149 HAWD::Formatter::print(dataset);
142 dataset.insertRow(row); 150 }
143 HAWD::Formatter::print(dataset); 151
152 {
153 HAWD::Dataset dataset("dummy_write_disk", m_hawdState);
154 HAWD::Dataset::Row row = dataset.row();
155 row.setValue("rows", num);
156 row.setValue("onDisk", onDisk / 1024);
157 row.setValue("bufferSize", bufferSizeTotal / 1024);
158 row.setValue("writeAmplification", writeAmplification);
159 row.setTimestamp(timestamp);
160 dataset.insertRow(row);
161 HAWD::Formatter::print(dataset);
162 }
144 163
145 // Print memory layout, RSS is what is in memory 164 // Print memory layout, RSS is what is in memory
146 // std::system("exec pmap -x \"$PPID\""); 165 // std::system("exec pmap -x \"$PPID\"");
@@ -161,22 +180,23 @@ private slots:
161 180
162 void runBenchmarks() 181 void runBenchmarks()
163 { 182 {
164 writeInProcess(1000); 183 writeInProcess(1000, mTimeStamp);
165 writeInProcess(2000); 184 writeInProcess(2000, mTimeStamp);
166 writeInProcess(5000); 185 writeInProcess(5000, mTimeStamp);
167 writeInProcess(20000); 186 writeInProcess(20000, mTimeStamp);
168 } 187 }
169 188
170 void ensureUsedMemoryRemainsStable() 189 void ensureUsedMemoryRemainsStable()
171 { 190 {
172 auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity)); 191 auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity));
173 auto timeStandardDeviation = sqrt(variance(mTimePerEntity)); 192 auto timeStandardDeviation = sqrt(variance(mTimePerEntity));
174 HAWD::Dataset dataset("dummy_write_in_process_summary", m_hawdState); 193 HAWD::Dataset dataset("dummy_write_summary", m_hawdState);
175 HAWD::Dataset::Row row = dataset.row(); 194 HAWD::Dataset::Row row = dataset.row();
176 row.setValue("rssStandardDeviation", rssStandardDeviation); 195 row.setValue("rssStandardDeviation", rssStandardDeviation);
177 row.setValue("rssMaxDifference", maxDifference(mRssGrowthPerEntity)); 196 row.setValue("rssMaxDifference", maxDifference(mRssGrowthPerEntity));
178 row.setValue("timeStandardDeviation", timeStandardDeviation); 197 row.setValue("timeStandardDeviation", timeStandardDeviation);
179 row.setValue("timeMaxDifference", maxDifference(mTimePerEntity)); 198 row.setValue("timeMaxDifference", maxDifference(mTimePerEntity));
199 row.setTimestamp(mTimeStamp);
180 dataset.insertRow(row); 200 dataset.insertRow(row);
181 HAWD::Formatter::print(dataset); 201 HAWD::Formatter::print(dataset);
182 } 202 }