From dcfc70808ab9680a8caed6ff0fb98f978fbbef97 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 17 Oct 2017 12:40:03 +0200 Subject: Split up dummyresourcewritebenchmark into datasets that we want to display. --- tests/dummyresourcewritebenchmark.cpp | 68 ++++++++++++++++++++++------------- tests/hawd/dataset.cpp | 15 ++++++++ tests/hawd/dataset.h | 4 ++- tests/hawd/modules/json.cpp | 1 + 4 files changed, 63 insertions(+), 25 deletions(-) (limited to 'tests') 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 @@ #include #include +#include #include @@ -72,8 +73,9 @@ class DummyResourceWriteBenchmark : public QObject QList mRssGrowthPerEntity; QList mTimePerEntity; + QDateTime mTimeStamp{QDateTime::currentDateTimeUtc()}; - void writeInProcess(int num) + void writeInProcess(int num, const QDateTime ×tamp) { DummyResource::removeFromDisk("sink.dummy.instance1"); @@ -122,25 +124,42 @@ class DummyResourceWriteBenchmark : public QObject mTimePerEntity << static_cast(allProcessedTime) / static_cast(num); mRssGrowthPerEntity << rssGrowthPerEntity; - QVERIFY(percentageRssError < 10); - // TODO This is much more than it should it seems, although adding the attachment results in pretty exactly a 1k increase, - // so it doesn't look like that memory is being duplicated. - QVERIFY(rssGrowthPerEntity < 2500); + { + HAWD::Dataset dataset("dummy_write_perf", 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.setTimestamp(timestamp); + 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); + { + HAWD::Dataset dataset("dummy_write_memory", m_hawdState); + HAWD::Dataset::Row row = dataset.row(); + row.setValue("rows", num); + row.setValue("rss", QVariant::fromValue(finalRss / 1024)); + row.setValue("peakRss", QVariant::fromValue(peakRss / 1024)); + row.setValue("percentagePeakRssError", percentageRssError); + row.setValue("rssGrowthPerEntity", QVariant::fromValue(rssGrowthPerEntity)); + row.setValue("rssWithoutDb", rssWithoutDb / 1024); + row.setTimestamp(timestamp); + dataset.insertRow(row); + HAWD::Formatter::print(dataset); + } + + { + HAWD::Dataset dataset("dummy_write_disk", m_hawdState); + HAWD::Dataset::Row row = dataset.row(); + row.setValue("rows", num); + row.setValue("onDisk", onDisk / 1024); + row.setValue("bufferSize", bufferSizeTotal / 1024); + row.setValue("writeAmplification", writeAmplification); + row.setTimestamp(timestamp); + dataset.insertRow(row); + HAWD::Formatter::print(dataset); + } // Print memory layout, RSS is what is in memory // std::system("exec pmap -x \"$PPID\""); @@ -161,22 +180,23 @@ private slots: void runBenchmarks() { - writeInProcess(1000); - writeInProcess(2000); - writeInProcess(5000); - writeInProcess(20000); + writeInProcess(1000, mTimeStamp); + writeInProcess(2000, mTimeStamp); + writeInProcess(5000, mTimeStamp); + writeInProcess(20000, mTimeStamp); } void ensureUsedMemoryRemainsStable() { auto rssStandardDeviation = sqrt(variance(mRssGrowthPerEntity)); auto timeStandardDeviation = sqrt(variance(mTimePerEntity)); - HAWD::Dataset dataset("dummy_write_in_process_summary", m_hawdState); + HAWD::Dataset dataset("dummy_write_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)); + row.setTimestamp(mTimeStamp); dataset.insertRow(row); HAWD::Formatter::print(dataset); } diff --git a/tests/hawd/dataset.cpp b/tests/hawd/dataset.cpp index 62fa0d7..3325850 100644 --- a/tests/hawd/dataset.cpp +++ b/tests/hawd/dataset.cpp @@ -31,6 +31,7 @@ namespace HAWD static const QString s_annotationKey("__annotation__"); static const QString s_hashKey("__commithash__"); +static const QString s_timestampKey("__timestamp"); static const int s_fieldWidth(20); Dataset::Row::Row(const Row &other) @@ -118,6 +119,8 @@ void Dataset::Row::fromBinary(QByteArray data) m_annotation = value.toString(); } else if (key == s_hashKey) { m_commitHash = value.toString(); + } else if (key == s_timestampKey) { + m_timeStamp = value.toDateTime(); } else { setValue(key, value); } @@ -141,6 +144,10 @@ QByteArray Dataset::Row::toBinary() const stream << s_hashKey << QVariant(m_commitHash); } + if (!m_timeStamp.isValid()) { + stream << s_timestampKey << QVariant(m_timeStamp); + } + if (!m_annotation.isEmpty()) { stream << s_annotationKey << QVariant(m_annotation); } @@ -189,11 +196,19 @@ QString Dataset::Row::commitHash() const QDateTime Dataset::Row::timestamp() const { + if (m_timeStamp.isValid()) { + return m_timeStamp; + } QDateTime dt; dt.setMSecsSinceEpoch(m_key); return dt; } +void Dataset::Row::setTimestamp(const QDateTime &dt) +{ + m_timeStamp = dt; +} + QString Dataset::Row::toString(const QStringList &cols, int standardCols, const QString &seperator) const { if (m_data.isEmpty()) { diff --git a/tests/hawd/dataset.h b/tests/hawd/dataset.h index 9660709..f24cacf 100644 --- a/tests/hawd/dataset.h +++ b/tests/hawd/dataset.h @@ -28,6 +28,7 @@ #include #include +#include namespace HAWD { @@ -52,6 +53,7 @@ public: QDateTime timestamp() const; void annotate(const QString ¬e); void setCommitHash(const QString &hash); + void setTimestamp(const QDateTime &dt); qint64 key() const; QByteArray toBinary() const; QString toString(const QStringList &cols = QStringList(), int standardCols = All, const QString &seperator = "|") const; @@ -66,6 +68,7 @@ public: QHash m_data; QString m_annotation; QString m_commitHash; + QDateTime m_timeStamp; const Dataset *m_dataset; friend class Dataset; }; @@ -82,7 +85,6 @@ public: void eachRow(const std::function &resultHandler); Row row(qint64 key = 0); Row lastRow(); - //TODO: row cursor private: DatasetDefinition m_definition; diff --git a/tests/hawd/modules/json.cpp b/tests/hawd/modules/json.cpp index d299761..092c977 100644 --- a/tests/hawd/modules/json.cpp +++ b/tests/hawd/modules/json.cpp @@ -63,6 +63,7 @@ bool Json::toJson(const QStringList &commands, State &state) QJsonObject json; json.insert("dataset", datasetName); + json.insert("name", definition.name()); json.insert("description", definition.description()); const auto columns = definition.columns(); -- cgit v1.2.3