Skip to content

Commit 425f129

Browse files
authored
Add latency option to the benchmark (#164)
1 parent 251bb5a commit 425f129

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

examples/5-Benchmark.cxx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <random>
99

1010
using Monitoring = o2::monitoring::MonitoringFactory;
11+
using o2::monitoring::Metric;
1112

1213
int main(int argc, char* argv[])
1314
{
@@ -22,7 +23,7 @@ int main(int argc, char* argv[])
2223
std::uniform_int_distribution<> intDist(1, 100);
2324

2425
boost::program_options::options_description desc("Allowed options");
25-
desc.add_options()("sleep", boost::program_options::value<int>(), "Thread sleep in microseconds")("url", boost::program_options::value<std::string>()->required(), "URL to monitoring backend (or list of comma seperated URLs)")("id", boost::program_options::value<std::string>(), "Instance ID")("count", boost::program_options::value<int>(), "Number of loop cycles")("multiple", boost::program_options::bool_switch()->default_value(false), "Sends multiple metrics per measurement")("monitor", boost::program_options::bool_switch()->default_value(false), "Enabled process monitor")("buffer", boost::program_options::value<int>(), "Creates buffr of given size")("measurements", boost::program_options::value<int>(), "Number of different measurements");
26+
desc.add_options()("sleep", boost::program_options::value<int>(), "Thread sleep in microseconds")("url", boost::program_options::value<std::string>()->required(), "URL to monitoring backend (or list of comma seperated URLs)")("id", boost::program_options::value<std::string>(), "Instance ID")("count", boost::program_options::value<int>(), "Number of loop cycles")("multiple", boost::program_options::bool_switch()->default_value(false), "Sends multiple metrics per measurement")("latency", boost::program_options::bool_switch()->default_value(false), "Sends timestamp as a value")("monitor", boost::program_options::bool_switch()->default_value(false), "Enabled process monitor")("buffer", boost::program_options::value<int>(), "Creates buffr of given size")("measurements", boost::program_options::value<int>(), "Number of different measurements");
2627

2728
boost::program_options::variables_map vm;
2829
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm);
@@ -54,6 +55,18 @@ int main(int argc, char* argv[])
5455
if (!vm.count("count"))
5556
j--;
5657
}
58+
} else if (vm["latency"].as<bool>()) {
59+
Metric::includeTimestamp = false;
60+
for (int j = 1; j <= count; j++) {
61+
auto timestamp = Metric::getCurrentTimestamp();
62+
uint64_t nowTimestamp = std::chrono::duration_cast<std::chrono::nanoseconds>(
63+
timestamp.time_since_epoch())
64+
.count();
65+
monitoring->send({nowTimestamp, "latency"});
66+
std::this_thread::sleep_for(std::chrono::microseconds(sleep));
67+
if (!vm.count("count"))
68+
j--;
69+
}
5770
} else {
5871
if (vm.count("buffer")) {
5972
monitoring->enableBuffering(vm["buffer"].as<int>());

include/Monitoring/Metric.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ class Metric
116116
/// Regex policy setter
117117
static void setVerbosityPolicy(Verbosity verbosity, const std::regex& regex);
118118

119+
/// Whether timestamp should be included or not
120+
static bool includeTimestamp;
121+
119122
protected:
120123
/// Allow DerivedMetrics access to setTags
121124
friend class o2::monitoring::DerivedMetrics;

src/Backends/InfluxDB.cxx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ void InfluxDB::sendMultiple(std::string measurement, std::vector<Metric>&& metri
8181
convert << ",";
8282
}
8383
convert.seekp(-1, std::ios_base::end);
84-
convert << " " << convertTimestamp(metrics.back().getTimestamp());
84+
if (Metric::includeTimestamp) {
85+
convert << " " << convertTimestamp(metrics.back().getTimestamp());
86+
}
8587

8688
try {
8789
mTransport->send(convert.str());
@@ -131,8 +133,9 @@ std::string InfluxDB::toInfluxLineProtocol(const Metric& metric)
131133
[&convert](const std::string& value) { convert << '"' << value << '"'; },
132134
},
133135
metric.getValue());
134-
135-
convert << " " << convertTimestamp(metric.getTimestamp());
136+
if (Metric::includeTimestamp) {
137+
convert << " " << convertTimestamp(metric.getTimestamp());
138+
}
136139
return convert.str();
137140
}
138141

src/Metric.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ void Metric::setDefaultVerbosity(Verbosity verbosity)
136136
Metric::DefaultVerbosity = verbosity;
137137
}
138138

139+
bool Metric::includeTimestamp = true;
139140
Verbosity Metric::DefaultVerbosity = Verbosity::Info;
140141
std::map<std::underlying_type<Verbosity>::type, std::regex> Metric::mRegexPolicy;
141142

0 commit comments

Comments
 (0)