|
|
|
@ -45,14 +45,6 @@ |
|
|
|
|
namespace grpc { |
|
|
|
|
namespace testing { |
|
|
|
|
|
|
|
|
|
static double WallTime(ClientStats s) { return s.time_elapsed(); } |
|
|
|
|
static double SystemTime(ClientStats s) { return s.time_system(); } |
|
|
|
|
static double UserTime(ClientStats s) { return s.time_user(); } |
|
|
|
|
static double ServerWallTime(ServerStats s) { return s.time_elapsed(); } |
|
|
|
|
static double ServerSystemTime(ServerStats s) { return s.time_system(); } |
|
|
|
|
static double ServerUserTime(ServerStats s) { return s.time_user(); } |
|
|
|
|
static int Cores(int n) { return n; } |
|
|
|
|
|
|
|
|
|
void CompositeReporter::add(std::unique_ptr<Reporter> reporter) { |
|
|
|
|
reporters_.emplace_back(std::move(reporter)); |
|
|
|
|
} |
|
|
|
@ -82,44 +74,34 @@ void CompositeReporter::ReportTimes(const ScenarioResult& result) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportQPS(const ScenarioResult& result) { |
|
|
|
|
Histogram histogram; |
|
|
|
|
histogram.MergeProto(result.latencies()); |
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f", |
|
|
|
|
histogram.Count() / average(result.client_stats(), WallTime)); |
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f", result.summary().qps()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportQPSPerCore(const ScenarioResult& result) { |
|
|
|
|
Histogram histogram; |
|
|
|
|
histogram.MergeProto(result.latencies()); |
|
|
|
|
auto qps = histogram.Count() / average(result.client_stats(), WallTime); |
|
|
|
|
|
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f (%.1f/server core)", qps, |
|
|
|
|
qps / sum(result.server_cores(), Cores)); |
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f (%.1f/server core)", |
|
|
|
|
result.summary().qps(), |
|
|
|
|
result.summary().qps_per_server_core()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportLatency(const ScenarioResult& result) { |
|
|
|
|
Histogram histogram; |
|
|
|
|
histogram.MergeProto(result.latencies()); |
|
|
|
|
gpr_log(GPR_INFO, |
|
|
|
|
"Latencies (50/90/95/99/99.9%%-ile): %.1f/%.1f/%.1f/%.1f/%.1f us", |
|
|
|
|
histogram.Percentile(50) / 1000, histogram.Percentile(90) / 1000, |
|
|
|
|
histogram.Percentile(95) / 1000, histogram.Percentile(99) / 1000, |
|
|
|
|
histogram.Percentile(99.9) / 1000); |
|
|
|
|
result.summary().latency_50() / 1000, |
|
|
|
|
result.summary().latency_90() / 1000, |
|
|
|
|
result.summary().latency_95() / 1000, |
|
|
|
|
result.summary().latency_99() / 1000, |
|
|
|
|
result.summary().latency_999() / 1000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportTimes(const ScenarioResult& result) { |
|
|
|
|
gpr_log(GPR_INFO, "Server system time: %.2f%%", |
|
|
|
|
100.0 * sum(result.server_stats(), ServerSystemTime) / |
|
|
|
|
sum(result.server_stats(), ServerWallTime)); |
|
|
|
|
result.summary().server_system_time()); |
|
|
|
|
gpr_log(GPR_INFO, "Server user time: %.2f%%", |
|
|
|
|
100.0 * sum(result.server_stats(), ServerUserTime) / |
|
|
|
|
sum(result.server_stats(), ServerWallTime)); |
|
|
|
|
result.summary().server_user_time()); |
|
|
|
|
gpr_log(GPR_INFO, "Client system time: %.2f%%", |
|
|
|
|
100.0 * sum(result.client_stats(), SystemTime) / |
|
|
|
|
sum(result.client_stats(), WallTime)); |
|
|
|
|
result.summary().client_system_time()); |
|
|
|
|
gpr_log(GPR_INFO, "Client user time: %.2f%%", |
|
|
|
|
100.0 * sum(result.client_stats(), UserTime) / |
|
|
|
|
sum(result.client_stats(), WallTime)); |
|
|
|
|
result.summary().client_user_time()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void JsonReporter::ReportQPS(const ScenarioResult& result) { |
|
|
|
|