|
|
|
@ -34,11 +34,16 @@ |
|
|
|
|
#include "test/cpp/qps/report.h" |
|
|
|
|
|
|
|
|
|
#include <grpc/support/log.h> |
|
|
|
|
#include "test/cpp/qps/driver.h" |
|
|
|
|
#include "test/cpp/qps/stats.h" |
|
|
|
|
|
|
|
|
|
namespace grpc { |
|
|
|
|
namespace testing { |
|
|
|
|
|
|
|
|
|
static double WallTime(ResourceUsage u) { return u.wall_time(); } |
|
|
|
|
static double UserTime(ResourceUsage u) { return u.user_time(); } |
|
|
|
|
static double SystemTime(ResourceUsage u) { return u.system_time(); } |
|
|
|
|
|
|
|
|
|
void CompositeReporter::add(std::unique_ptr<Reporter> reporter) { |
|
|
|
|
reporters_.emplace_back(std::move(reporter)); |
|
|
|
|
} |
|
|
|
@ -68,16 +73,14 @@ void CompositeReporter::ReportTimes(const ScenarioResult& result) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportQPS(const ScenarioResult& result) { |
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f", |
|
|
|
|
result.latencies.Count() / |
|
|
|
|
average(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; })); |
|
|
|
|
gpr_log( |
|
|
|
|
GPR_INFO, "QPS: %.1f", |
|
|
|
|
result.latencies.Count() / average(result.client_resources, WallTime)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportQPSPerCore(const ScenarioResult& result) { |
|
|
|
|
auto qps = result.latencies.Count() / |
|
|
|
|
average(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
auto qps = |
|
|
|
|
result.latencies.Count() / average(result.client_resources, WallTime); |
|
|
|
|
|
|
|
|
|
gpr_log(GPR_INFO, "QPS: %.1f (%.1f/server core)", qps, |
|
|
|
|
qps / result.server_config.threads()); |
|
|
|
@ -95,40 +98,30 @@ void GprLogReporter::ReportLatency(const ScenarioResult& result) { |
|
|
|
|
|
|
|
|
|
void GprLogReporter::ReportTimes(const ScenarioResult& result) { |
|
|
|
|
gpr_log(GPR_INFO, "Server system time: %.2f%%", |
|
|
|
|
100.0 * sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.system_time; }) / |
|
|
|
|
sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; })); |
|
|
|
|
100.0 * sum(result.server_resources, SystemTime) / |
|
|
|
|
sum(result.server_resources, WallTime)); |
|
|
|
|
gpr_log(GPR_INFO, "Server user time: %.2f%%", |
|
|
|
|
100.0 * sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.user_time; }) / |
|
|
|
|
sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; })); |
|
|
|
|
100.0 * sum(result.server_resources, UserTime) / |
|
|
|
|
sum(result.server_resources, WallTime)); |
|
|
|
|
gpr_log(GPR_INFO, "Client system time: %.2f%%", |
|
|
|
|
100.0 * sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.system_time; }) / |
|
|
|
|
sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; })); |
|
|
|
|
100.0 * sum(result.client_resources, SystemTime) / |
|
|
|
|
sum(result.client_resources, WallTime)); |
|
|
|
|
gpr_log(GPR_INFO, "Client user time: %.2f%%", |
|
|
|
|
100.0 * sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.user_time; }) / |
|
|
|
|
sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; })); |
|
|
|
|
100.0 * sum(result.client_resources, UserTime) / |
|
|
|
|
sum(result.client_resources, WallTime)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PerfDbReporter::ReportQPS(const ScenarioResult& result) { |
|
|
|
|
auto qps = result.latencies.Count() / |
|
|
|
|
average(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
auto qps = |
|
|
|
|
result.latencies.Count() / average(result.client_resources, WallTime); |
|
|
|
|
|
|
|
|
|
perf_db_client_.setQps(qps); |
|
|
|
|
perf_db_client_.setConfigs(result.client_config, result.server_config); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PerfDbReporter::ReportQPSPerCore(const ScenarioResult& result) { |
|
|
|
|
auto qps = result.latencies.Count() / |
|
|
|
|
average(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
auto qps = |
|
|
|
|
result.latencies.Count() / average(result.client_resources, WallTime); |
|
|
|
|
|
|
|
|
|
auto qpsPerCore = qps / result.server_config.threads(); |
|
|
|
|
|
|
|
|
@ -139,33 +132,25 @@ void PerfDbReporter::ReportQPSPerCore(const ScenarioResult& result) { |
|
|
|
|
|
|
|
|
|
void PerfDbReporter::ReportLatency(const ScenarioResult& result) { |
|
|
|
|
perf_db_client_.setLatencies(result.latencies.Percentile(50) / 1000, |
|
|
|
|
result.latencies.Percentile(90) / 1000, |
|
|
|
|
result.latencies.Percentile(95) / 1000, |
|
|
|
|
result.latencies.Percentile(99) / 1000, |
|
|
|
|
result.latencies.Percentile(99.9) / 1000); |
|
|
|
|
result.latencies.Percentile(90) / 1000, |
|
|
|
|
result.latencies.Percentile(95) / 1000, |
|
|
|
|
result.latencies.Percentile(99) / 1000, |
|
|
|
|
result.latencies.Percentile(99.9) / 1000); |
|
|
|
|
perf_db_client_.setConfigs(result.client_config, result.server_config); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PerfDbReporter::ReportTimes(const ScenarioResult& result) { |
|
|
|
|
double server_system_time = |
|
|
|
|
100.0 * sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.system_time; }) / |
|
|
|
|
sum(result.server_resources, [](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
double server_user_time = |
|
|
|
|
100.0 * sum(result.server_resources, |
|
|
|
|
[](ResourceUsage u) { return u.user_time; }) / |
|
|
|
|
sum(result.server_resources, [](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
double client_system_time = |
|
|
|
|
100.0 * sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.system_time; }) / |
|
|
|
|
sum(result.client_resources, [](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
double client_user_time = |
|
|
|
|
100.0 * sum(result.client_resources, |
|
|
|
|
[](ResourceUsage u) { return u.user_time; }) / |
|
|
|
|
sum(result.client_resources, [](ResourceUsage u) { return u.wall_time; }); |
|
|
|
|
|
|
|
|
|
perf_db_client_.setTimes(server_system_time, server_user_time, client_system_time, |
|
|
|
|
client_user_time); |
|
|
|
|
double server_system_time = 100.0 * sum(result.server_resources, SystemTime) / |
|
|
|
|
sum(result.server_resources, WallTime); |
|
|
|
|
double server_user_time = 100.0 * sum(result.server_resources, UserTime) / |
|
|
|
|
sum(result.server_resources, WallTime); |
|
|
|
|
double client_system_time = 100.0 * sum(result.client_resources, SystemTime) / |
|
|
|
|
sum(result.client_resources, WallTime); |
|
|
|
|
double client_user_time = 100.0 * sum(result.client_resources, UserTime) / |
|
|
|
|
sum(result.client_resources, WallTime); |
|
|
|
|
|
|
|
|
|
perf_db_client_.setTimes(server_system_time, server_user_time, |
|
|
|
|
client_system_time, client_user_time); |
|
|
|
|
perf_db_client_.setConfigs(result.client_config, result.server_config); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|