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;
+ });
}