From 9a4141c306bf2a13bf4d83e685086a5fe91a3b95 Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Thu, 11 Apr 2019 12:12:38 -0700 Subject: [PATCH] Added timestamp flag in TensorFlow TPU profiler for monitoring. PiperOrigin-RevId: 243116546 --- tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc | 7 ++++++- tensorflow/core/profiler/rpc/client/capture_profile.cc | 5 ++--- tensorflow/core/profiler/rpc/client/capture_profile.h | 5 +++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc b/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc index 32858850cdb..a2848f58ebd 100644 --- a/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc +++ b/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc @@ -31,6 +31,7 @@ int main(int argc, char** argv) { int FLAGS_num_tracing_attempts = 3; bool FLAGS_include_dataset_ops = true; int FLAGS_monitoring_level = 0; + bool FLAGS_timestamp = false; int FLAGS_num_queries = 100; std::vector flag_list = { tensorflow::Flag("service_addr", &FLAGS_service_addr, @@ -54,6 +55,9 @@ int main(int argc, char** argv) { "Choose a monitoring level between 1 and 2 to monitor " "your TPU job continuously. Level 2 is more verbose " "than level 1 and shows more metrics."), + tensorflow::Flag("timestamp", &FLAGS_timestamp, + "Set to true to display timestamp in monitoring " + "results."), tensorflow::Flag("num_queries", &FLAGS_num_queries, "This script will run monitoring for num_queries before " "it stops.")}; @@ -102,7 +106,8 @@ int main(int argc, char** argv) { << "ms and show metrics for " << num_queries << " time(s)." << std::endl; tensorflow::profiler::client::StartMonitoring( - FLAGS_service_addr, duration_ms, FLAGS_monitoring_level, num_queries); + FLAGS_service_addr, duration_ms, FLAGS_monitoring_level, + FLAGS_timestamp, num_queries); } else { status = tensorflow::profiler::client::StartTracing( FLAGS_service_addr, FLAGS_logdir, FLAGS_workers_list, diff --git a/tensorflow/core/profiler/rpc/client/capture_profile.cc b/tensorflow/core/profiler/rpc/client/capture_profile.cc index 1d0235a6e7a..d1cc109eb63 100644 --- a/tensorflow/core/profiler/rpc/client/capture_profile.cc +++ b/tensorflow/core/profiler/rpc/client/capture_profile.cc @@ -243,11 +243,10 @@ MonitorRequest PopulateMonitorRequest(int duration_ms, int monitoring_level, } void StartMonitoring(const tensorflow::string& service_addr, int duration_ms, - int monitoring_level, int num_queries) { + int monitoring_level, bool timestamp, int num_queries) { for (int query = 0; query < num_queries; ++query) { MonitorRequest request = - PopulateMonitorRequest(duration_ms, monitoring_level, - /*timestamp=*/false); + PopulateMonitorRequest(duration_ms, monitoring_level, timestamp); ::grpc::ClientContext context; ::grpc::ChannelArguments channel_args; diff --git a/tensorflow/core/profiler/rpc/client/capture_profile.h b/tensorflow/core/profiler/rpc/client/capture_profile.h index 98803672479..f8be2220193 100644 --- a/tensorflow/core/profiler/rpc/client/capture_profile.h +++ b/tensorflow/core/profiler/rpc/client/capture_profile.h @@ -26,9 +26,10 @@ namespace client { Status ValidateHostPortPair(const string& host_port); // Repeatedly collects profiles and shows user-friendly metrics for -// 'num_queries' time(s). +// 'num_queries' time(s). If timestamp flag is true, timestamp will be +// displayed in "%H:%M:%S" format. void StartMonitoring(const tensorflow::string& service_addr, int duration_ms, - int monitoring_level, int num_queries); + int monitoring_level, bool timestamp, int num_queries); // Starts tracing on a single or multiple hosts and saves the result in the // given logdir. If no trace was collected, retries tracing for