Skip to content

Commit d51d9ae

Browse files
committed
Merge pull request grpc#6192 from jtattermusch/populate_summary_result
Populate ScenarioResultSummary result in QPS driver.
2 parents 8910349 + e9a8d89 commit d51d9ae

File tree

4 files changed

+71
-42
lines changed

4 files changed

+71
-42
lines changed

test/cpp/qps/driver.cc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include "test/cpp/qps/driver.h"
5353
#include "test/cpp/qps/histogram.h"
5454
#include "test/cpp/qps/qps_worker.h"
55+
#include "test/cpp/qps/stats.h"
5556

5657
using std::list;
5758
using std::thread;
@@ -115,6 +116,47 @@ static deque<string> get_workers(const string& name) {
115116
}
116117
}
117118

119+
// helpers for postprocess_scenario_result
120+
static double WallTime(ClientStats s) { return s.time_elapsed(); }
121+
static double SystemTime(ClientStats s) { return s.time_system(); }
122+
static double UserTime(ClientStats s) { return s.time_user(); }
123+
static double ServerWallTime(ServerStats s) { return s.time_elapsed(); }
124+
static double ServerSystemTime(ServerStats s) { return s.time_system(); }
125+
static double ServerUserTime(ServerStats s) { return s.time_user(); }
126+
static int Cores(int n) { return n; }
127+
128+
// Postprocess ScenarioResult and populate result summary.
129+
static void postprocess_scenario_result(ScenarioResult* result) {
130+
Histogram histogram;
131+
histogram.MergeProto(result->latencies());
132+
133+
auto qps = histogram.Count() / average(result->client_stats(), WallTime);
134+
auto qps_per_server_core = qps / sum(result->server_cores(), Cores);
135+
136+
result->mutable_summary()->set_qps(qps);
137+
result->mutable_summary()->set_qps_per_server_core(qps_per_server_core);
138+
result->mutable_summary()->set_latency_50(histogram.Percentile(50));
139+
result->mutable_summary()->set_latency_90(histogram.Percentile(90));
140+
result->mutable_summary()->set_latency_95(histogram.Percentile(95));
141+
result->mutable_summary()->set_latency_99(histogram.Percentile(99));
142+
result->mutable_summary()->set_latency_999(histogram.Percentile(99.9));
143+
144+
auto server_system_time = 100.0 *
145+
sum(result->server_stats(), ServerSystemTime) /
146+
sum(result->server_stats(), ServerWallTime);
147+
auto server_user_time = 100.0 * sum(result->server_stats(), ServerUserTime) /
148+
sum(result->server_stats(), ServerWallTime);
149+
auto client_system_time = 100.0 * sum(result->client_stats(), SystemTime) /
150+
sum(result->client_stats(), WallTime);
151+
auto client_user_time = 100.0 * sum(result->client_stats(), UserTime) /
152+
sum(result->client_stats(), WallTime);
153+
154+
result->mutable_summary()->set_server_system_time(server_system_time);
155+
result->mutable_summary()->set_server_user_time(server_user_time);
156+
result->mutable_summary()->set_client_system_time(client_system_time);
157+
result->mutable_summary()->set_client_user_time(client_user_time);
158+
}
159+
118160
// Namespace for classes and functions used only in RunScenario
119161
// Using this rather than local definitions to workaround gcc-4.4 limitations
120162
// regarding using templates without linkage
@@ -380,6 +422,8 @@ std::unique_ptr<ScenarioResult> RunScenario(
380422
}
381423

382424
delete[] servers;
425+
426+
postprocess_scenario_result(result.get());
383427
return result;
384428
}
385429

test/cpp/qps/report.cc

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,6 @@
4545
namespace grpc {
4646
namespace testing {
4747

48-
static double WallTime(ClientStats s) { return s.time_elapsed(); }
49-
static double SystemTime(ClientStats s) { return s.time_system(); }
50-
static double UserTime(ClientStats s) { return s.time_user(); }
51-
static double ServerWallTime(ServerStats s) { return s.time_elapsed(); }
52-
static double ServerSystemTime(ServerStats s) { return s.time_system(); }
53-
static double ServerUserTime(ServerStats s) { return s.time_user(); }
54-
static int Cores(int n) { return n; }
55-
5648
void CompositeReporter::add(std::unique_ptr<Reporter> reporter) {
5749
reporters_.emplace_back(std::move(reporter));
5850
}
@@ -82,44 +74,33 @@ void CompositeReporter::ReportTimes(const ScenarioResult& result) {
8274
}
8375

8476
void GprLogReporter::ReportQPS(const ScenarioResult& result) {
85-
Histogram histogram;
86-
histogram.MergeProto(result.latencies());
87-
gpr_log(GPR_INFO, "QPS: %.1f",
88-
histogram.Count() / average(result.client_stats(), WallTime));
77+
gpr_log(GPR_INFO, "QPS: %.1f", result.summary().qps());
8978
}
9079

9180
void GprLogReporter::ReportQPSPerCore(const ScenarioResult& result) {
92-
Histogram histogram;
93-
histogram.MergeProto(result.latencies());
94-
auto qps = histogram.Count() / average(result.client_stats(), WallTime);
95-
96-
gpr_log(GPR_INFO, "QPS: %.1f (%.1f/server core)", qps,
97-
qps / sum(result.server_cores(), Cores));
81+
gpr_log(GPR_INFO, "QPS: %.1f (%.1f/server core)", result.summary().qps(),
82+
result.summary().qps_per_server_core());
9883
}
9984

10085
void GprLogReporter::ReportLatency(const ScenarioResult& result) {
101-
Histogram histogram;
102-
histogram.MergeProto(result.latencies());
10386
gpr_log(GPR_INFO,
10487
"Latencies (50/90/95/99/99.9%%-ile): %.1f/%.1f/%.1f/%.1f/%.1f us",
105-
histogram.Percentile(50) / 1000, histogram.Percentile(90) / 1000,
106-
histogram.Percentile(95) / 1000, histogram.Percentile(99) / 1000,
107-
histogram.Percentile(99.9) / 1000);
88+
result.summary().latency_50() / 1000,
89+
result.summary().latency_90() / 1000,
90+
result.summary().latency_95() / 1000,
91+
result.summary().latency_99() / 1000,
92+
result.summary().latency_999() / 1000);
10893
}
10994

11095
void GprLogReporter::ReportTimes(const ScenarioResult& result) {
11196
gpr_log(GPR_INFO, "Server system time: %.2f%%",
112-
100.0 * sum(result.server_stats(), ServerSystemTime) /
113-
sum(result.server_stats(), ServerWallTime));
97+
result.summary().server_system_time());
11498
gpr_log(GPR_INFO, "Server user time: %.2f%%",
115-
100.0 * sum(result.server_stats(), ServerUserTime) /
116-
sum(result.server_stats(), ServerWallTime));
99+
result.summary().server_user_time());
117100
gpr_log(GPR_INFO, "Client system time: %.2f%%",
118-
100.0 * sum(result.client_stats(), SystemTime) /
119-
sum(result.client_stats(), WallTime));
101+
result.summary().client_system_time());
120102
gpr_log(GPR_INFO, "Client user time: %.2f%%",
121-
100.0 * sum(result.client_stats(), UserTime) /
122-
sum(result.client_stats(), WallTime));
103+
result.summary().client_user_time());
123104
}
124105

125106
void JsonReporter::ReportQPS(const ScenarioResult& result) {

tools/gcp/utils/big_query_utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,13 @@ def insert_rows(big_query, project_id, dataset_id, table_id, rows_list):
119119
tableId=table_id,
120120
body=body)
121121
res = insert_req.execute(num_retries=NUM_RETRIES)
122+
if res.get('insertErrors', None):
123+
print 'Error inserting rows! Response: %s' % res
124+
is_success = False
122125
except HttpError as http_error:
123-
print 'Error in inserting rows in the table %s' % table_id
126+
print 'Error inserting rows to the table %s' % table_id
124127
is_success = False
128+
125129
return is_success
126130

127131

tools/run_tests/performance/scenario_result_schema.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -148,52 +148,52 @@
148148
"mode": "NULLABLE"
149149
},
150150
{
151-
"name": "qps_per_server_core",
151+
"name": "qpsPerServerCore",
152152
"type": "FLOAT",
153153
"mode": "NULLABLE"
154154
},
155155
{
156-
"name": "server_system_time",
156+
"name": "serverSystemTime",
157157
"type": "FLOAT",
158158
"mode": "NULLABLE"
159159
},
160160
{
161-
"name": "server_user_time",
161+
"name": "serverUserTime",
162162
"type": "FLOAT",
163163
"mode": "NULLABLE"
164164
},
165165
{
166-
"name": "client_system_time",
166+
"name": "clientSystemTime",
167167
"type": "FLOAT",
168168
"mode": "NULLABLE"
169169
},
170170
{
171-
"name": "client_user_time",
171+
"name": "clientUserTime",
172172
"type": "FLOAT",
173173
"mode": "NULLABLE"
174174
},
175175
{
176-
"name": "latency_50",
176+
"name": "latency50",
177177
"type": "FLOAT",
178178
"mode": "NULLABLE"
179179
},
180180
{
181-
"name": "latency_90",
181+
"name": "latency90",
182182
"type": "FLOAT",
183183
"mode": "NULLABLE"
184184
},
185185
{
186-
"name": "latency_95",
186+
"name": "latency95",
187187
"type": "FLOAT",
188188
"mode": "NULLABLE"
189189
},
190190
{
191-
"name": "latency_99",
191+
"name": "latency99",
192192
"type": "FLOAT",
193193
"mode": "NULLABLE"
194194
},
195195
{
196-
"name": "latency_999",
196+
"name": "latency999",
197197
"type": "FLOAT",
198198
"mode": "NULLABLE"
199199
}

0 commit comments

Comments
 (0)