diff options
author | Vijay Pai <vpai@google.com> | 2015-02-01 09:31:09 -0800 |
---|---|---|
committer | Vijay Pai <vpai@google.com> | 2015-02-01 09:31:09 -0800 |
commit | 0ea6b435f39aa8a670e7834f8bff619c6f6d42a3 (patch) | |
tree | e766b8f80b5f49a175fb4067cf87f276e9d4aee1 /test/cpp | |
parent | d2f2e8ec8221606837ecae242abdb08e4f50c55f (diff) | |
parent | 056ba544a272ac070855d204a1476f289a8bb8c4 (diff) |
Merge pull request #324 from ctiller/bench
Add pprof support to qps client, server
Diffstat (limited to 'test/cpp')
-rw-r--r-- | test/cpp/qps/client.cc | 6 | ||||
-rw-r--r-- | test/cpp/qps/server.cc | 26 |
2 files changed, 28 insertions, 4 deletions
diff --git a/test/cpp/qps/client.cc b/test/cpp/qps/client.cc index affc4926bf..d2c83aad3d 100644 --- a/test/cpp/qps/client.cc +++ b/test/cpp/qps/client.cc @@ -44,6 +44,7 @@ #include <google/gflags.h> #include <grpc++/client_context.h> #include <grpc++/status.h> +#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 eb810b8d55..c35d9ebdd8 100644 --- a/test/cpp/qps/server.cc +++ b/test/cpp/qps/server.cc @@ -33,6 +33,7 @@ #include <sys/time.h> #include <sys/resource.h> +#include <sys/signal.h> #include <thread> #include <google/gflags.h> @@ -43,6 +44,7 @@ #include <grpc++/server_builder.h> #include <grpc++/server_context.h> #include <grpc++/status.h> +#include "test/core/util/grpc_profiler.h" #include "test/cpp/qps/qpstest.pb.h" #include <grpc/grpc.h> @@ -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> 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; } + |