You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2014/05/14 00:47:42 UTC

git commit: Added task gauges to slave metrics.

Repository: mesos
Updated Branches:
  refs/heads/master 0ff4bb0c1 -> c75e76c66


Added task gauges to slave metrics.

Review: https://reviews.apache.org/r/21276


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/c75e76c6
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/c75e76c6
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/c75e76c6

Branch: refs/heads/master
Commit: c75e76c663830e6eb35bcf17c13de3ec611f16fd
Parents: 0ff4bb0
Author: Dominic Hamon <dh...@twopensource.com>
Authored: Tue May 13 15:23:36 2014 -0700
Committer: Benjamin Mahler <bm...@twitter.com>
Committed: Tue May 13 15:47:35 2014 -0700

----------------------------------------------------------------------
 src/slave/slave.cpp | 110 ++++++++++++++++++++++++++++++++++++++++++++---
 src/slave/slave.hpp |  12 +++++-
 2 files changed, 114 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/c75e76c6/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 3a4ae38..f8ed65b 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -3081,7 +3081,51 @@ Future<Nothing> Slave::garbageCollect(const string& path)
 }
 
 
-// TODO(dhamon): Consider adding a metrics.cpp for definitions.
+// TODO(dhamon): Move these to their own metrics.hpp|cpp.
+double Slave::_tasks_staging()
+{
+  double count = 0.0;
+  foreachvalue (Framework* framework, frameworks) {
+    foreachvalue (Executor* executor, framework->executors) {
+      count += executor->queuedTasks.size();
+    }
+  }
+  return count;
+}
+
+
+double Slave::_tasks_starting()
+{
+  double count = 0.0;
+  foreachvalue (Framework* framework, frameworks) {
+    foreachvalue (Executor* executor, framework->executors) {
+      foreach (Task* task, executor->launchedTasks.values()) {
+        if (task->state() == TASK_STARTING) {
+          count++;
+        }
+      }
+    }
+  }
+  return count;
+}
+
+
+double Slave::_tasks_running()
+{
+  double count = 0.0;
+  foreachvalue (Framework* framework, frameworks) {
+    foreachvalue (Executor* executor, framework->executors) {
+      foreach (Task* task, executor->launchedTasks.values()) {
+        if (task->state() == TASK_RUNNING) {
+          count++;
+        }
+      }
+    }
+  }
+  return count;
+}
+
+
 Slave::Metrics::Metrics(const Slave& slave)
   : uptime_secs(
         "slave/uptime_secs",
@@ -3094,6 +3138,23 @@ Slave::Metrics::Metrics(const Slave& slave)
     active_frameworks(
         "slave/active_frameworks",
         defer(slave, &Slave::_active_frameworks)),
+    tasks_staging(
+        "slave/tasks_staging",
+        defer(slave, &Slave::_tasks_staging)),
+    tasks_starting(
+        "slave/tasks_starting",
+        defer(slave, &Slave::_tasks_starting)),
+    tasks_running(
+        "slave/tasks_running",
+        defer(slave, &Slave::_tasks_running)),
+    tasks_finished(
+        "slave/tasks_finished"),
+    tasks_failed(
+        "slave/tasks_failed"),
+    tasks_killed(
+        "slave/tasks_killed"),
+    tasks_lost(
+        "slave/tasks_lost"),
     valid_status_updates(
         "slave/valid_status_updates"),
     invalid_status_updates(
@@ -3111,6 +3172,14 @@ Slave::Metrics::Metrics(const Slave& slave)
 
   process::metrics::add(active_frameworks);
 
+  process::metrics::add(tasks_staging);
+  process::metrics::add(tasks_starting);
+  process::metrics::add(tasks_running);
+  process::metrics::add(tasks_finished);
+  process::metrics::add(tasks_failed);
+  process::metrics::add(tasks_killed);
+  process::metrics::add(tasks_lost);
+
   process::metrics::add(valid_status_updates);
   process::metrics::add(invalid_status_updates);
 
@@ -3122,17 +3191,26 @@ Slave::Metrics::Metrics(const Slave& slave)
 Slave::Metrics::~Metrics()
 {
   // TODO(dhamon): Check return values of unregistered metrics
+  process::metrics::remove(uptime_secs);
+  process::metrics::remove(registered);
+
+  process::metrics::remove(recovery_errors);
+
+  process::metrics::remove(active_frameworks);
+
+  process::metrics::remove(tasks_staging);
+  process::metrics::remove(tasks_starting);
+  process::metrics::remove(tasks_running);
+  process::metrics::remove(tasks_finished);
+  process::metrics::remove(tasks_failed);
+  process::metrics::remove(tasks_killed);
+  process::metrics::remove(tasks_lost);
+
   process::metrics::remove(valid_status_updates);
   process::metrics::remove(invalid_status_updates);
 
   process::metrics::remove(valid_framework_messages);
   process::metrics::remove(invalid_framework_messages);
-
-  process::metrics::remove(active_frameworks);
-  process::metrics::remove(registered);
-  process::metrics::remove(uptime_secs);
-
-  process::metrics::remove(recovery_errors);
 }
 
 
@@ -3541,6 +3619,24 @@ void Executor::terminateTask(
     launchedTasks.erase(taskId);
   }
 
+  switch (state) {
+    case TASK_FINISHED:
+      ++slave->metrics.tasks_finished;
+      break;
+    case TASK_FAILED:
+      ++slave->metrics.tasks_failed;
+      break;
+    case TASK_KILLED:
+      ++slave->metrics.tasks_killed;
+      break;
+    case TASK_LOST:
+      ++slave->metrics.tasks_lost;
+      break;
+    default:
+      LOG(WARNING) << "Unhandled task state " << state << " on completion.";
+      break;
+  }
+
   terminatedTasks[taskId] = CHECK_NOTNULL(task);
 }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/c75e76c6/src/slave/slave.hpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.hpp b/src/slave/slave.hpp
index a6efad4..29d2a16 100644
--- a/src/slave/slave.hpp
+++ b/src/slave/slave.hpp
@@ -350,6 +350,10 @@ private:
     return master.isSome() ? 1 : 0;
   }
 
+  double _tasks_staging();
+  double _tasks_starting();
+  double _tasks_running();
+
   const Flags flags;
 
   SlaveInfo info;
@@ -392,7 +396,13 @@ private:
 
     process::metrics::Gauge active_frameworks;
 
-    // TODO(dhamon): Add tasks Gauges.
+    process::metrics::Gauge tasks_staging;
+    process::metrics::Gauge tasks_starting;
+    process::metrics::Gauge tasks_running;
+    process::metrics::Counter tasks_finished;
+    process::metrics::Counter tasks_failed;
+    process::metrics::Counter tasks_killed;
+    process::metrics::Counter tasks_lost;
 
     process::metrics::Counter valid_status_updates;
     process::metrics::Counter invalid_status_updates;