This is an automated email from the ASF dual-hosted git repository.

nwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git


The following commit(s) were added to refs/heads/master by this push:
     new 251098b  Change tmaster/stmgr uptime granularity to be 1 second (#3190)
251098b is described below

commit 251098b51b42aa3ff83445f6118e83a2b354f340
Author: Ning Wang <[email protected]>
AuthorDate: Fri Feb 15 16:09:36 2019 -0800

    Change tmaster/stmgr uptime granularity to be 1 second (#3190)
---
 heron/stmgr/src/cpp/manager/stmgr.cpp     | 15 +++++++++++----
 heron/stmgr/src/cpp/manager/stmgr.h       |  2 ++
 heron/tmaster/src/cpp/manager/tmaster.cpp | 20 +++++++++++++-------
 heron/tmaster/src/cpp/manager/tmaster.h   |  2 ++
 4 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/heron/stmgr/src/cpp/manager/stmgr.cpp 
b/heron/stmgr/src/cpp/manager/stmgr.cpp
index 732ae2d..3d8fa28 100644
--- a/heron/stmgr/src/cpp/manager/stmgr.cpp
+++ b/heron/stmgr/src/cpp/manager/stmgr.cpp
@@ -68,6 +68,7 @@ const sp_string METRIC_DROPPED_DURING_RESTORE = 
"__dropped_during_restore";
 const sp_string METRIC_TIME_SPENT_BACK_PRESSURE_INIT =
     "__server/__time_spent_back_pressure_initiated";
 const sp_int64 PROCESS_METRICS_FREQUENCY = 10_s;
+const sp_int64 UPTIME_METRIC_FREQUENCY = 1_s;
 const sp_int64 TMASTER_RETRY_FREQUENCY = 10_s;
 
 StMgr::StMgr(EventLoop* eventLoop, const sp_string& _myhost, sp_int32 
_data_port,
@@ -184,6 +185,11 @@ void StMgr::Init() {
                    1_s),
            0);
 
+  // Update uptime metric every 1 second
+  CHECK_GT(eventLoop_->registerTimer([this](EventLoop::Status status) {
+    this->UpdateUptimeMetric();
+  }, true, UPTIME_METRIC_FREQUENCY), 0);
+
   // Update Process related metrics every 10 seconds
   CHECK_GT(eventLoop_->registerTimer([this](EventLoop::Status status) {
     this->UpdateProcessMetrics(status);
@@ -244,12 +250,13 @@ void StMgr::CheckTMasterLocation(EventLoop::Status) {
   }
 }
 
-void StMgr::UpdateProcessMetrics(EventLoop::Status) {
-  // Uptime
+void StMgr::UpdateUptimeMetric() {
   auto end_time = std::chrono::high_resolution_clock::now();
-  auto delta = std::chrono::duration_cast<std::chrono::seconds>(end_time - 
start_time_).count();
-  stmgr_process_metrics_->scope(METRIC_UPTIME)->SetValue(delta);
+  auto uptime = std::chrono::duration_cast<std::chrono::seconds>(end_time - 
start_time_).count();
+  stmgr_process_metrics_->scope(METRIC_UPTIME)->SetValue(uptime);
+}
 
+void StMgr::UpdateProcessMetrics(EventLoop::Status) {
   // CPU
   struct rusage usage;
   ProcessUtils::getResourceUsage(&usage);
diff --git a/heron/stmgr/src/cpp/manager/stmgr.h 
b/heron/stmgr/src/cpp/manager/stmgr.h
index 77807b1..abf84a6 100644
--- a/heron/stmgr/src/cpp/manager/stmgr.h
+++ b/heron/stmgr/src/cpp/manager/stmgr.h
@@ -129,6 +129,8 @@ class StMgr {
   void FetchMetricsCacheLocation();
   // A wrapper that calls FetchTMasterLocation. Needed for RegisterTimer
   void CheckTMasterLocation(EventLoop::Status);
+
+  void UpdateUptimeMetric();
   void UpdateProcessMetrics(EventLoop::Status);
 
   // Utility function to create checkpoint mgr client
diff --git a/heron/tmaster/src/cpp/manager/tmaster.cpp 
b/heron/tmaster/src/cpp/manager/tmaster.cpp
index 45af72f..44d9a15 100644
--- a/heron/tmaster/src/cpp/manager/tmaster.cpp
+++ b/heron/tmaster/src/cpp/manager/tmaster.cpp
@@ -54,6 +54,7 @@ const sp_string METRIC_UPTIME = "__uptime_sec";
 const sp_string METRIC_MEM_USED = "__mem_used_bytes";
 const sp_int64 STATE_MANAGER_RETRY_FREQUENCY = 10_s;
 const sp_int64 PROCESS_METRICS_FREQUENCY = 60_s;
+const sp_int64 UPTIME_METRIC_FREQUENCY = 1_s;
 const sp_string METRIC_PREFIX = "__process";
 
 TMaster::TMaster(const std::string& _zk_hostport, const std::string& 
_topology_name,
@@ -132,13 +133,18 @@ TMaster::TMaster(const std::string& _zk_hostport, const 
std::string& _topology_n
                    1_s),
            0);
 
-  // Flush logs every 10 seconds
+  // Flush logs every interval
   CHECK_GT(eventLoop_->registerTimer(
                [](EventLoop::Status) { ::heron::common::FlushLogs(); }, true,
                
config::HeronInternalsConfigReader::Instance()->GetHeronLoggingFlushIntervalSec()
 *
                    1_s),
            0);
 
+  // Update uptime metric every 1 second
+  CHECK_GT(eventLoop_->registerTimer([this](EventLoop::Status status) {
+    this->UpdateUptimeMetric();
+  }, true, UPTIME_METRIC_FREQUENCY), 0);
+
   // Update Process related metrics every 60 seconds
   CHECK_GT(eventLoop_->registerTimer([this](EventLoop::Status status) {
     this->UpdateProcessMetrics(status);
@@ -250,13 +256,13 @@ TMaster::~TMaster() {
   delete dns_;
 }
 
-void TMaster::UpdateProcessMetrics(EventLoop::Status) {
-  // Uptime
-  auto delta = std::chrono::duration_cast<std::chrono::seconds>(
-                   std::chrono::high_resolution_clock::now() - start_time_)
-                   .count();
-  tmasterProcessMetrics->scope(METRIC_UPTIME)->SetValue(delta);
+void TMaster::UpdateUptimeMetric() {
+  auto end_time = std::chrono::high_resolution_clock::now();
+  auto uptime = std::chrono::duration_cast<std::chrono::seconds>(end_time - 
start_time_).count();
+  tmasterProcessMetrics->scope(METRIC_UPTIME)->SetValue(uptime);
+}
 
+void TMaster::UpdateProcessMetrics(EventLoop::Status) {
   // CPU
   struct rusage usage;
   ProcessUtils::getResourceUsage(&usage);
diff --git a/heron/tmaster/src/cpp/manager/tmaster.h 
b/heron/tmaster/src/cpp/manager/tmaster.h
index 0730f92..8c48f36 100644
--- a/heron/tmaster/src/cpp/manager/tmaster.h
+++ b/heron/tmaster/src/cpp/manager/tmaster.h
@@ -181,6 +181,8 @@ class TMaster {
   void OnPackingPlanFetch(proto::system::PackingPlan* newPackingPlan,
                           proto::system::StatusCode _status);
 
+  // Metrics updates
+  void UpdateUptimeMetric();
   void UpdateProcessMetrics(EventLoop::Status);
 
   // Update configurations in physical plan.

Reply via email to