You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2016/07/27 23:03:07 UTC

mesos git commit: Implemented `CgroupsIsolatorProcess::usage`.

Repository: mesos
Updated Branches:
  refs/heads/master b464fdf74 -> 28eda7458


Implemented `CgroupsIsolatorProcess::usage`.

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


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

Branch: refs/heads/master
Commit: 28eda74583622513fb4d18cf0451c523dec4576c
Parents: b464fdf
Author: haosdent huang <ha...@gmail.com>
Authored: Wed Jul 27 15:54:34 2016 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Jul 27 16:02:34 2016 -0700

----------------------------------------------------------------------
 .../mesos/isolators/cgroups/cgroups.cpp         | 27 +++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/28eda745/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
index d99d14b..5f59898 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
@@ -283,7 +283,32 @@ Future<Nothing> CgroupsIsolatorProcess::update(
 Future<ResourceStatistics> CgroupsIsolatorProcess::usage(
     const ContainerID& containerId)
 {
-  return Failure("Not implemented.");
+  if (!infos.contains(containerId)) {
+    return Failure("Unknown container");
+  }
+
+  list<Future<ResourceStatistics>> usages;
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+    usages.push_back(subsystem->usage(containerId));
+  }
+
+  return await(usages)
+    .then([containerId](const list<Future<ResourceStatistics>>& _usages) {
+      ResourceStatistics result;
+
+      foreach (const Future<ResourceStatistics>& statistics, _usages) {
+        if (statistics.isReady()) {
+          result.MergeFrom(statistics.get());
+        } else {
+          LOG(WARNING) << "Skipping resource statistic for container "
+                       << containerId << " because: "
+                       << (statistics.isFailed() ? statistics.failure()
+                                                 : "discarded");
+        }
+      }
+
+      return result;
+    });
 }