diff --git a/test/cpp/qps/client.cc b/test/cpp/qps/client.cc index affc4926bf3..d2c83aad3df 100644 --- a/test/cpp/qps/client.cc +++ b/test/cpp/qps/client.cc @@ -44,6 +44,7 @@ #include #include #include +#include "test/core/util/grpc_profiler.h" #include "test/cpp/util/create_test_channel.h" #include "test/cpp/qps/qpstest.pb.h" @@ -129,6 +130,8 @@ void RunTest(const int client_threads, const int client_channels, grpc::Status status_beg = stub_stats->CollectServerStats( &context_stats_begin, stats_request, &server_stats_begin); + grpc_profiler_start("qps_client.prof"); + for (int i = 0; i < client_threads; i++) { gpr_histogram *hist = gpr_histogram_create(0.01, 60e9); GPR_ASSERT(hist != NULL); @@ -172,6 +175,9 @@ void RunTest(const int client_threads, const int client_channels, for (auto &t : threads) { t.join(); } + + grpc_profiler_stop(); + for (int i = 0; i < client_threads; i++) { gpr_histogram *h = thread_stats[i]; gpr_log(GPR_INFO, "latency at thread %d (50/90/95/99/99.9): %f/%f/%f/%f/%f", diff --git a/test/cpp/qps/server.cc b/test/cpp/qps/server.cc index eb810b8d559..c35d9ebdd87 100644 --- a/test/cpp/qps/server.cc +++ b/test/cpp/qps/server.cc @@ -33,6 +33,7 @@ #include #include +#include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include "test/core/util/grpc_profiler.h" #include "test/cpp/qps/qpstest.pb.h" #include @@ -63,11 +65,15 @@ using grpc::testing::StatsRequest; using grpc::testing::TestService; using grpc::Status; +static bool got_sigint = false; + +static void sigint_handler(int x) { got_sigint = 1; } + static double time_double(struct timeval* tv) { return tv->tv_sec + 1e-6 * tv->tv_usec; } -bool SetPayload(PayloadType type, int size, Payload* payload) { +static bool SetPayload(PayloadType type, int size, Payload* payload) { PayloadType response_type = type; // TODO(yangg): Support UNCOMPRESSABLE payload. if (type != PayloadType::COMPRESSABLE) { @@ -79,7 +85,9 @@ bool SetPayload(PayloadType type, int size, Payload* payload) { return true; } -class TestServiceImpl : public TestService::Service { +namespace { + +class TestServiceImpl final : public TestService::Service { public: Status CollectServerStats(ServerContext* context, const StatsRequest*, ServerStats* response) { @@ -104,7 +112,9 @@ class TestServiceImpl : public TestService::Service { } }; -void RunServer() { +} // namespace + +static void RunServer() { char* server_address = NULL; gpr_join_host_port(&server_address, "::", FLAGS_port); @@ -118,10 +128,15 @@ void RunServer() { builder.RegisterService(service.service()); std::unique_ptr server(builder.BuildAndStart()); gpr_log(GPR_INFO, "Server listening on %s\n", server_address); - while (true) { + + grpc_profiler_start("qps_server.prof"); + + while (!got_sigint) { std::this_thread::sleep_for(std::chrono::seconds(5)); } + grpc_profiler_stop(); + gpr_free(server_address); } @@ -129,6 +144,8 @@ int main(int argc, char** argv) { grpc_init(); google::ParseCommandLineFlags(&argc, &argv, true); + signal(SIGINT, sigint_handler); + GPR_ASSERT(FLAGS_port != 0); GPR_ASSERT(!FLAGS_enable_ssl); RunServer(); @@ -136,3 +153,4 @@ int main(int argc, char** argv) { grpc_shutdown(); return 0; } +