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.