You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/05/11 07:55:01 UTC

[1/3] mesos git commit: Explicitly marked functions `override` in cgroup subsystems.

Repository: mesos
Updated Branches:
  refs/heads/master 77279f025 -> fc25a22cb


Explicitly marked functions `override` in cgroup subsystems.

This patch adds `override` keywords to functions overriding `virtual`
base class functions. This explicitness helps in a subsequent patch in
refactoring the `Subsystem` base class interface.

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


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

Branch: refs/heads/master
Commit: d8c710504f278a6463488553106d27b6bc5fc808
Parents: 77279f0
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri May 11 00:54:20 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Fri May 11 00:54:20 2018 -0700

----------------------------------------------------------------------
 .../isolators/cgroups/subsystems/blkio.hpp      |  8 +++---
 .../mesos/isolators/cgroups/subsystems/cpu.hpp  | 12 ++++-----
 .../isolators/cgroups/subsystems/cpuacct.hpp    |  8 +++---
 .../isolators/cgroups/subsystems/cpuset.hpp     |  4 +--
 .../isolators/cgroups/subsystems/devices.hpp    | 16 +++++------
 .../isolators/cgroups/subsystems/hugetlb.hpp    |  4 +--
 .../isolators/cgroups/subsystems/memory.hpp     | 28 ++++++++++----------
 .../isolators/cgroups/subsystems/net_cls.hpp    | 24 ++++++++---------
 .../isolators/cgroups/subsystems/net_prio.hpp   |  4 +--
 .../isolators/cgroups/subsystems/perf_event.hpp | 22 +++++++--------
 .../mesos/isolators/cgroups/subsystems/pids.hpp |  4 +--
 11 files changed, 67 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
index ebddf4e..7d6bb9b 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
@@ -42,16 +42,16 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~BlkioSubsystem() {}
+  ~BlkioSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_BLKIO_NAME;
   };
 
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   BlkioSubsystem(const Flags& flags, const std::string& hierarchy);

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
index 282a761..01d14ab 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
@@ -42,21 +42,21 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~CpuSubsystem() {}
+  ~CpuSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_CPU_NAME;
   };
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
       const std::string& cgroup,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   CpuSubsystem(const Flags& flags, const std::string& hierarchy);

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
index e4977da..60d348c 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
@@ -42,16 +42,16 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~CpuacctSubsystem() {}
+  ~CpuacctSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_CPUACCT_NAME;
   }
 
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   CpuacctSubsystem(const Flags& flags, const std::string& hierarchy);

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
index b5d712a..1360d0f 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
@@ -42,9 +42,9 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~CpusetSubsystem() {}
+  ~CpusetSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_CPUSET_NAME;
   };

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
index 4ab224e..4f48ca0 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
@@ -46,24 +46,24 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~DevicesSubsystem() {}
+  ~DevicesSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_DEVICES_NAME;
   }
 
-  virtual process::Future<Nothing> prepare(
+  process::Future<Nothing> prepare(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> cleanup(
+  process::Future<Nothing> cleanup(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   DevicesSubsystem(

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
index 2740713..98d50a6 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
@@ -42,9 +42,9 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~HugetlbSubsystem() {}
+  ~HugetlbSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_HUGETLB_NAME;
   };

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
index d79fda3..654ccb9 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
@@ -48,37 +48,37 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~MemorySubsystem() {}
+  ~MemorySubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_MEMORY_NAME;
   }
 
-  virtual process::Future<Nothing> prepare(
+  process::Future<Nothing> prepare(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<mesos::slave::ContainerLimitation> watch(
+  process::Future<mesos::slave::ContainerLimitation> watch(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
       const std::string& cgroup,
-      const Resources& resources);
+      const Resources& resources) override;
 
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> cleanup(
+  process::Future<Nothing> cleanup(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   struct Info

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
index bcaa161..be36659 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
@@ -137,33 +137,33 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~NetClsSubsystem() {}
+  ~NetClsSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_NET_CLS_NAME;
   }
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> prepare(
+  process::Future<Nothing> prepare(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> isolate(
+  process::Future<Nothing> isolate(
       const ContainerID& containerId,
       const std::string& cgroup,
-      pid_t pid);
+      pid_t pid) override;
 
-  virtual process::Future<ContainerStatus> status(
+  process::Future<ContainerStatus> status(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> cleanup(
+  process::Future<Nothing> cleanup(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 private:
   NetClsSubsystem(

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
index 002c689..e6bb83f 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
@@ -42,9 +42,9 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~NetPrioSubsystem() {}
+  ~NetPrioSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_NET_PRIO_NAME;
   };

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
index 14c0e79..a55cdef 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
@@ -48,31 +48,31 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~PerfEventSubsystem() {}
+  ~PerfEventSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_PERF_EVENT_NAME;
   }
 
-  virtual process::Future<Nothing> prepare(
+  process::Future<Nothing> prepare(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
-  virtual process::Future<Nothing> cleanup(
+  process::Future<Nothing> cleanup(
       const ContainerID& containerId,
-      const std::string& cgroup);
+      const std::string& cgroup) override;
 
 protected:
-  virtual void initialize();
+  void initialize() override;
 
 private:
   PerfEventSubsystem(

http://git-wip-us.apache.org/repos/asf/mesos/blob/d8c71050/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
index cb6c919..e0f344d 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
@@ -42,9 +42,9 @@ public:
       const Flags& flags,
       const std::string& hierarchy);
 
-  virtual ~PidsSubsystem() {}
+  ~PidsSubsystem() override = default;
 
-  virtual std::string name() const
+  std::string name() const override
   {
     return CGROUP_SUBSYSTEM_PIDS_NAME;
   };


[3/3] mesos git commit: Introduced wrapper for access to cgroups system access.

Posted by gi...@apache.org.
Introduced wrapper for access to cgroups system access.

Different cgroups subsystems are modelled as actors. In this patch we
introduce wrapper classes which `dispatch` to the processes. This
removes e.g., races from mixing naked and `dispatch`'ed method calls.

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


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

Branch: refs/heads/master
Commit: fc25a22cbb18d8a044473cc2dc6a0bb6c8d2dbf2
Parents: 1168de4
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri May 11 00:54:32 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Fri May 11 00:54:32 2018 -0700

----------------------------------------------------------------------
 .../mesos/isolators/cgroups/cgroups.cpp         |  46 ++-----
 .../mesos/isolators/cgroups/cgroups.hpp         |   9 +-
 .../mesos/isolators/cgroups/subsystem.cpp       | 126 ++++++++++++++++++-
 .../mesos/isolators/cgroups/subsystem.hpp       |  79 ++++++++++--
 4 files changed, 207 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/fc25a22c/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 a03e0ad..6d663a5 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
@@ -57,7 +57,7 @@ namespace slave {
 CgroupsIsolatorProcess::CgroupsIsolatorProcess(
     const Flags& _flags,
     const hashmap<string, string>& _hierarchies,
-    const multihashmap<string, Owned<SubsystemProcess>>& _subsystems)
+    const multihashmap<string, Owned<Subsystem>>& _subsystems)
   : ProcessBase(process::ID::generate("cgroups-isolator")),
     flags(_flags),
     hierarchies(_hierarchies),
@@ -73,7 +73,7 @@ Try<Isolator*> CgroupsIsolatorProcess::create(const Flags& flags)
   hashmap<string, string> hierarchies;
 
   // Hierarchy path -> subsystem object.
-  multihashmap<string, Owned<SubsystemProcess>> subsystems;
+  multihashmap<string, Owned<Subsystem>> subsystems;
 
   // Multimap: isolator name -> subsystem name.
   multihashmap<string, string> isolatorMap = {
@@ -124,8 +124,8 @@ Try<Isolator*> CgroupsIsolatorProcess::create(const Flags& flags)
       }
 
       // Create and load the subsystem.
-      Try<Owned<SubsystemProcess>> subsystem =
-        SubsystemProcess::create(flags, subsystemName, hierarchy.get());
+      Try<Owned<Subsystem>> subsystem =
+        Subsystem::create(flags, subsystemName, hierarchy.get());
 
       if (subsystem.isError()) {
         return Error(
@@ -157,23 +157,6 @@ bool CgroupsIsolatorProcess::supportsStandalone()
 }
 
 
-void CgroupsIsolatorProcess::initialize()
-{
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
-    spawn(subsystem.get());
-  }
-}
-
-
-void CgroupsIsolatorProcess::finalize()
-{
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
-    terminate(subsystem.get());
-    wait(subsystem.get());
-  }
-}
-
-
 Future<Nothing> CgroupsIsolatorProcess::recover(
     const list<ContainerState>& states,
     const hashset<ContainerID>& orphans)
@@ -338,8 +321,7 @@ Future<Nothing> CgroupsIsolatorProcess::___recover(
       continue;
     }
 
-    foreach (
-        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
+    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
       recoveredSubsystems.insert(subsystem->name());
       recovers.push_back(subsystem->recover(containerId, cgroup));
     }
@@ -439,8 +421,7 @@ Future<Option<ContainerLaunchInfo>> CgroupsIsolatorProcess::prepare(
           "'" + path + "': " + create.error());
     }
 
-    foreach (
-        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
+    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
       infos[containerId]->subsystems.insert(subsystem->name());
       prepares.push_back(subsystem->prepare(
           containerId,
@@ -578,7 +559,7 @@ Future<Nothing> CgroupsIsolatorProcess::isolate(
   }
 
   list<Future<Nothing>> isolates;
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     isolates.push_back(subsystem->isolate(
         containerId,
         infos[containerId]->cgroup,
@@ -629,7 +610,7 @@ Future<ContainerLimitation> CgroupsIsolatorProcess::watch(
     return Failure("Unknown container");
   }
 
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       subsystem->watch(containerId, infos[containerId]->cgroup)
         .onAny(defer(
@@ -671,7 +652,7 @@ Future<Nothing> CgroupsIsolatorProcess::update(
   }
 
   list<Future<Nothing>> updates;
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       updates.push_back(subsystem->update(
           containerId,
@@ -722,7 +703,7 @@ Future<ResourceStatistics> CgroupsIsolatorProcess::usage(
   }
 
   list<Future<ResourceStatistics>> usages;
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       usages.push_back(subsystem->usage(
           containerId,
@@ -765,7 +746,7 @@ Future<ContainerStatus> CgroupsIsolatorProcess::status(
   }
 
   list<Future<ContainerStatus>> statuses;
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       statuses.push_back(subsystem->status(
           containerId,
@@ -808,7 +789,7 @@ Future<Nothing> CgroupsIsolatorProcess::cleanup(
   }
 
   list<Future<Nothing>> cleanups;
-  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
+  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       cleanups.push_back(subsystem->cleanup(
           containerId,
@@ -850,8 +831,7 @@ Future<Nothing> CgroupsIsolatorProcess::_cleanup(
 
   // TODO(haosdent): Use foreachkey once MESOS-5037 is resolved.
   foreach (const string& hierarchy, subsystems.keys()) {
-    foreach (
-        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
+    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
       if (infos[containerId]->subsystems.contains(subsystem->name())) {
         destroys.push_back(cgroups::destroy(
             hierarchy,

http://git-wip-us.apache.org/repos/asf/mesos/blob/fc25a22c/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
index 9dcd5da..f47b16e 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
@@ -81,11 +81,6 @@ public:
   virtual process::Future<Nothing> cleanup(
       const ContainerID& containerId);
 
-protected:
-  virtual void initialize();
-
-  virtual void finalize();
-
 private:
   struct Info
   {
@@ -107,7 +102,7 @@ private:
   CgroupsIsolatorProcess(
       const Flags& _flags,
       const hashmap<std::string, std::string>& _hierarchies,
-      const multihashmap<std::string, process::Owned<SubsystemProcess>>&
+      const multihashmap<std::string, process::Owned<Subsystem>>&
         _subsystems);
 
   process::Future<Nothing> _recover(
@@ -162,7 +157,7 @@ private:
   //   /cgroup/memory      -> memory
   // As we see, subsystem 'cpu' and 'cpuacct' are co-mounted at
   // '/cgroup/cpu,cpuacct'.
-  multihashmap<std::string, process::Owned<SubsystemProcess>> subsystems;
+  multihashmap<std::string, process::Owned<Subsystem>> subsystems;
 
   // Store cgroups associated information for containers.
   hashmap<ContainerID, process::Owned<Info>> infos;

http://git-wip-us.apache.org/repos/asf/mesos/blob/fc25a22c/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
index 1ba6ec4..dc6c7aa 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
@@ -14,6 +14,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include <utility>
+
 #include <stout/error.hpp>
 #include <stout/hashmap.hpp>
 
@@ -43,7 +45,27 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<SubsystemProcess>> SubsystemProcess::create(
+Subsystem::Subsystem(Owned<SubsystemProcess> _process)
+  : process(std::move(_process))
+{
+  process::spawn(process.get());
+}
+
+
+Subsystem::~Subsystem()
+{
+  process::terminate(process.get());
+  process::wait(process.get());
+}
+
+
+string Subsystem::name() const
+{
+  return process->name();
+}
+
+
+Try<Owned<Subsystem>> Subsystem::create(
     const Flags& flags,
     const string& name,
     const string& hierarchy)
@@ -76,7 +98,107 @@ Try<Owned<SubsystemProcess>> SubsystemProcess::create(
         subsystemProcess.error());
   }
 
-  return subsystemProcess.get();
+  return Owned<Subsystem>(new Subsystem(subsystemProcess.get()));
+}
+
+
+Future<Nothing> Subsystem::recover(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::recover,
+      containerId,
+      cgroup);
+}
+
+
+Future<Nothing> Subsystem::prepare(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::prepare,
+      containerId,
+      cgroup);
+}
+
+
+Future<Nothing> Subsystem::isolate(
+    const ContainerID& containerId,
+    const string& cgroup,
+    pid_t pid)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::isolate,
+      containerId,
+      cgroup,
+      pid);
+}
+
+
+Future<mesos::slave::ContainerLimitation> Subsystem::watch(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::watch,
+      containerId,
+      cgroup);
+}
+
+
+Future<Nothing> Subsystem::update(
+    const ContainerID& containerId,
+    const string& cgroup,
+    const Resources& resources)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::update,
+      containerId,
+      cgroup,
+      resources);
+}
+
+
+Future<ResourceStatistics> Subsystem::usage(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::usage,
+      containerId,
+      cgroup);
+}
+
+
+Future<ContainerStatus> Subsystem::status(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::status,
+      containerId,
+      cgroup);
+}
+
+
+Future<Nothing> Subsystem::cleanup(
+    const ContainerID& containerId,
+    const string& cgroup)
+{
+  return process::dispatch(
+      process.get(),
+      &SubsystemProcess::cleanup,
+      containerId,
+      cgroup);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/fc25a22c/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
index c99a00c..5ae8253 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
@@ -36,10 +36,12 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
+class SubsystemProcess;
+
 /**
  * An abstraction for cgroups subsystem.
  */
-class SubsystemProcess : public process::Process<SubsystemProcess>
+class Subsystem
 {
 public:
   /**
@@ -51,19 +53,26 @@ public:
    * @param hierarchy The hierarchy path of cgroups subsystem.
    * @return A specific `Subsystem` object or an error if `create` fails.
    */
-  static Try<process::Owned<SubsystemProcess>> create(
+  static Try<process::Owned<Subsystem>> create(
       const Flags& flags,
       const std::string& name,
       const std::string& hierarchy);
 
-  virtual ~SubsystemProcess() {}
+  // We have unique ownership of the wrapped process and
+  // enforce that objects of this class cannot be copied.
+  //
+  // TODO(bbannier): Remove this once MESOS-5122 is resolved.
+  Subsystem(const Subsystem&) = delete;
+  Subsystem& operator=(const Subsystem&) = delete;
+
+  ~Subsystem();
 
   /**
    * The cgroups subsystem name of this `Subsystem` object.
    *
    * @return The cgroups subsystem name.
    */
-  virtual std::string name() const = 0;
+  std::string name() const;
 
   /**
    * Recover the cgroups subsystem for the associated container.
@@ -72,7 +81,7 @@ public:
    * @param cgroup The target cgroup.
    * @return Nothing or an error if `recover` fails.
    */
-  virtual process::Future<Nothing> recover(
+  process::Future<Nothing> recover(
       const ContainerID& containerId,
       const std::string& cgroup);
 
@@ -83,7 +92,7 @@ public:
    * @param cgroup The target cgroup.
    * @return Nothing or an error if `prepare` fails.
    */
-  virtual process::Future<Nothing> prepare(
+  process::Future<Nothing> prepare(
       const ContainerID& containerId,
       const std::string& cgroup);
 
@@ -95,7 +104,7 @@ public:
    * @param pid The process id of container.
    * @return Nothing or an error if `isolate` fails.
    */
-  virtual process::Future<Nothing> isolate(
+  process::Future<Nothing> isolate(
       const ContainerID& containerId,
       const std::string& cgroup,
       pid_t pid);
@@ -108,7 +117,7 @@ public:
    * @return The resource limitation that impacts the container or an
    *     error if `watch` fails.
    */
-  virtual process::Future<mesos::slave::ContainerLimitation> watch(
+  process::Future<mesos::slave::ContainerLimitation> watch(
       const ContainerID& containerId,
       const std::string& cgroup);
 
@@ -121,7 +130,7 @@ public:
    * @param resources The resources need to update.
    * @return Nothing or an error if `update` fails.
    */
-  virtual process::Future<Nothing> update(
+  process::Future<Nothing> update(
       const ContainerID& containerId,
       const std::string& cgroup,
       const Resources& resources);
@@ -135,7 +144,7 @@ public:
    * @return The resource usage statistics or an error if gather statistics
    *     fails.
    */
-  virtual process::Future<ResourceStatistics> usage(
+  process::Future<ResourceStatistics> usage(
       const ContainerID& containerId,
       const std::string& cgroup);
 
@@ -147,7 +156,7 @@ public:
    * @param cgroup The target cgroup.
    * @return The container status or an error if get fails.
    */
-  virtual process::Future<ContainerStatus> status(
+  process::Future<ContainerStatus> status(
       const ContainerID& containerId,
       const std::string& cgroup);
 
@@ -163,6 +172,54 @@ public:
    * @param cgroup The target cgroup.
    * @return Nothing or an error if `cleanup` fails.
    */
+  process::Future<Nothing> cleanup(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
+private:
+  explicit Subsystem(process::Owned<SubsystemProcess> process);
+
+  process::Owned<SubsystemProcess> process;
+};
+
+
+class SubsystemProcess : public process::Process<SubsystemProcess>
+{
+public:
+  virtual ~SubsystemProcess() {}
+
+  virtual std::string name() const = 0;
+
+  virtual process::Future<Nothing> recover(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
+  virtual process::Future<Nothing> prepare(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
+  virtual process::Future<Nothing> isolate(
+      const ContainerID& containerId,
+      const std::string& cgroup,
+      pid_t pid);
+
+  virtual process::Future<mesos::slave::ContainerLimitation> watch(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
+  virtual process::Future<Nothing> update(
+      const ContainerID& containerId,
+      const std::string& cgroup,
+      const Resources& resources);
+
+  virtual process::Future<ResourceStatistics> usage(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
+  virtual process::Future<ContainerStatus> status(
+      const ContainerID& containerId,
+      const std::string& cgroup);
+
   virtual process::Future<Nothing> cleanup(
       const ContainerID& containerId,
       const std::string& cgroup);


[2/3] mesos git commit: Renamed cgroups subsystem processes.

Posted by gi...@apache.org.
Renamed cgroups subsystem processes.

The different cgroups subsystems are modelled as actors implemented as
libprocess `Process`es. This patch renames the classes to clearly
reflect their `Process` nature.

In a subsequent patch we will introduce a wrapper class to access
subsystems.

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


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

Branch: refs/heads/master
Commit: 1168de48a1133f33767ea4ad5cec8e48f49cf07e
Parents: d8c7105
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri May 11 00:54:25 2018 -0700
Committer: Gilbert Song <so...@gmail.com>
Committed: Fri May 11 00:54:25 2018 -0700

----------------------------------------------------------------------
 .../mesos/isolators/cgroups/cgroups.cpp         | 33 ++++++------
 .../mesos/isolators/cgroups/cgroups.hpp         |  5 +-
 .../mesos/isolators/cgroups/subsystem.cpp       | 54 ++++++++++----------
 .../mesos/isolators/cgroups/subsystem.hpp       |  8 +--
 .../isolators/cgroups/subsystems/blkio.cpp      | 10 ++--
 .../isolators/cgroups/subsystems/blkio.hpp      |  8 +--
 .../mesos/isolators/cgroups/subsystems/cpu.cpp  | 12 ++---
 .../mesos/isolators/cgroups/subsystems/cpu.hpp  |  8 +--
 .../isolators/cgroups/subsystems/cpuacct.cpp    | 10 ++--
 .../isolators/cgroups/subsystems/cpuacct.hpp    |  8 +--
 .../isolators/cgroups/subsystems/cpuset.cpp     |  8 +--
 .../isolators/cgroups/subsystems/cpuset.hpp     |  8 +--
 .../isolators/cgroups/subsystems/devices.cpp    | 16 +++---
 .../isolators/cgroups/subsystems/devices.hpp    |  8 +--
 .../isolators/cgroups/subsystems/hugetlb.cpp    |  8 +--
 .../isolators/cgroups/subsystems/hugetlb.hpp    |  8 +--
 .../isolators/cgroups/subsystems/memory.cpp     | 36 ++++++-------
 .../isolators/cgroups/subsystems/memory.hpp     |  8 +--
 .../isolators/cgroups/subsystems/net_cls.cpp    | 22 ++++----
 .../isolators/cgroups/subsystems/net_cls.hpp    |  8 +--
 .../isolators/cgroups/subsystems/net_prio.cpp   |  8 +--
 .../isolators/cgroups/subsystems/net_prio.hpp   |  8 +--
 .../isolators/cgroups/subsystems/perf_event.cpp | 31 +++++------
 .../isolators/cgroups/subsystems/perf_event.hpp |  8 +--
 .../mesos/isolators/cgroups/subsystems/pids.cpp |  8 +--
 .../mesos/isolators/cgroups/subsystems/pids.hpp |  8 +--
 26 files changed, 182 insertions(+), 175 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/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 4431ce1..a03e0ad 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp
@@ -57,7 +57,7 @@ namespace slave {
 CgroupsIsolatorProcess::CgroupsIsolatorProcess(
     const Flags& _flags,
     const hashmap<string, string>& _hierarchies,
-    const multihashmap<string, Owned<Subsystem>>& _subsystems)
+    const multihashmap<string, Owned<SubsystemProcess>>& _subsystems)
   : ProcessBase(process::ID::generate("cgroups-isolator")),
     flags(_flags),
     hierarchies(_hierarchies),
@@ -73,7 +73,7 @@ Try<Isolator*> CgroupsIsolatorProcess::create(const Flags& flags)
   hashmap<string, string> hierarchies;
 
   // Hierarchy path -> subsystem object.
-  multihashmap<string, Owned<Subsystem>> subsystems;
+  multihashmap<string, Owned<SubsystemProcess>> subsystems;
 
   // Multimap: isolator name -> subsystem name.
   multihashmap<string, string> isolatorMap = {
@@ -124,8 +124,8 @@ Try<Isolator*> CgroupsIsolatorProcess::create(const Flags& flags)
       }
 
       // Create and load the subsystem.
-      Try<Owned<Subsystem>> subsystem =
-        Subsystem::create(flags, subsystemName, hierarchy.get());
+      Try<Owned<SubsystemProcess>> subsystem =
+        SubsystemProcess::create(flags, subsystemName, hierarchy.get());
 
       if (subsystem.isError()) {
         return Error(
@@ -159,7 +159,7 @@ bool CgroupsIsolatorProcess::supportsStandalone()
 
 void CgroupsIsolatorProcess::initialize()
 {
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     spawn(subsystem.get());
   }
 }
@@ -167,7 +167,7 @@ void CgroupsIsolatorProcess::initialize()
 
 void CgroupsIsolatorProcess::finalize()
 {
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     terminate(subsystem.get());
     wait(subsystem.get());
   }
@@ -338,7 +338,8 @@ Future<Nothing> CgroupsIsolatorProcess::___recover(
       continue;
     }
 
-    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
+    foreach (
+        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
       recoveredSubsystems.insert(subsystem->name());
       recovers.push_back(subsystem->recover(containerId, cgroup));
     }
@@ -438,7 +439,8 @@ Future<Option<ContainerLaunchInfo>> CgroupsIsolatorProcess::prepare(
           "'" + path + "': " + create.error());
     }
 
-    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
+    foreach (
+        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
       infos[containerId]->subsystems.insert(subsystem->name());
       prepares.push_back(subsystem->prepare(
           containerId,
@@ -576,7 +578,7 @@ Future<Nothing> CgroupsIsolatorProcess::isolate(
   }
 
   list<Future<Nothing>> isolates;
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     isolates.push_back(subsystem->isolate(
         containerId,
         infos[containerId]->cgroup,
@@ -627,7 +629,7 @@ Future<ContainerLimitation> CgroupsIsolatorProcess::watch(
     return Failure("Unknown container");
   }
 
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       subsystem->watch(containerId, infos[containerId]->cgroup)
         .onAny(defer(
@@ -669,7 +671,7 @@ Future<Nothing> CgroupsIsolatorProcess::update(
   }
 
   list<Future<Nothing>> updates;
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       updates.push_back(subsystem->update(
           containerId,
@@ -720,7 +722,7 @@ Future<ResourceStatistics> CgroupsIsolatorProcess::usage(
   }
 
   list<Future<ResourceStatistics>> usages;
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       usages.push_back(subsystem->usage(
           containerId,
@@ -763,7 +765,7 @@ Future<ContainerStatus> CgroupsIsolatorProcess::status(
   }
 
   list<Future<ContainerStatus>> statuses;
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       statuses.push_back(subsystem->status(
           containerId,
@@ -806,7 +808,7 @@ Future<Nothing> CgroupsIsolatorProcess::cleanup(
   }
 
   list<Future<Nothing>> cleanups;
-  foreachvalue (const Owned<Subsystem>& subsystem, subsystems) {
+  foreachvalue (const Owned<SubsystemProcess>& subsystem, subsystems) {
     if (infos[containerId]->subsystems.contains(subsystem->name())) {
       cleanups.push_back(subsystem->cleanup(
           containerId,
@@ -848,7 +850,8 @@ Future<Nothing> CgroupsIsolatorProcess::_cleanup(
 
   // TODO(haosdent): Use foreachkey once MESOS-5037 is resolved.
   foreach (const string& hierarchy, subsystems.keys()) {
-    foreach (const Owned<Subsystem>& subsystem, subsystems.get(hierarchy)) {
+    foreach (
+        const Owned<SubsystemProcess>& subsystem, subsystems.get(hierarchy)) {
       if (infos[containerId]->subsystems.contains(subsystem->name())) {
         destroys.push_back(cgroups::destroy(
             hierarchy,

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
index 5763c98..9dcd5da 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.hpp
@@ -107,7 +107,8 @@ private:
   CgroupsIsolatorProcess(
       const Flags& _flags,
       const hashmap<std::string, std::string>& _hierarchies,
-      const multihashmap<std::string, process::Owned<Subsystem>>& _subsystems);
+      const multihashmap<std::string, process::Owned<SubsystemProcess>>&
+        _subsystems);
 
   process::Future<Nothing> _recover(
       const hashset<ContainerID>& orphans,
@@ -161,7 +162,7 @@ private:
   //   /cgroup/memory      -> memory
   // As we see, subsystem 'cpu' and 'cpuacct' are co-mounted at
   // '/cgroup/cpu,cpuacct'.
-  multihashmap<std::string, process::Owned<Subsystem>> subsystems;
+  multihashmap<std::string, process::Owned<SubsystemProcess>> subsystems;
 
   // Store cgroups associated information for containers.
   hashmap<ContainerID, process::Owned<Info>> infos;

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
index 9afa02b..1ba6ec4 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.cpp
@@ -43,49 +43,51 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> Subsystem::create(
+Try<Owned<SubsystemProcess>> SubsystemProcess::create(
     const Flags& flags,
     const string& name,
     const string& hierarchy)
 {
-  hashmap<string, Try<Owned<Subsystem>>(*)(const Flags&, const string&)>
+  hashmap<string, Try<Owned<SubsystemProcess>>(*)(const Flags&, const string&)>
     creators = {
-    {CGROUP_SUBSYSTEM_BLKIO_NAME, &BlkioSubsystem::create},
-    {CGROUP_SUBSYSTEM_CPU_NAME, &CpuSubsystem::create},
-    {CGROUP_SUBSYSTEM_CPUACCT_NAME, &CpuacctSubsystem::create},
-    {CGROUP_SUBSYSTEM_CPUSET_NAME, &CpusetSubsystem::create},
-    {CGROUP_SUBSYSTEM_DEVICES_NAME, &DevicesSubsystem::create},
-    {CGROUP_SUBSYSTEM_HUGETLB_NAME, &HugetlbSubsystem::create},
-    {CGROUP_SUBSYSTEM_MEMORY_NAME, &MemorySubsystem::create},
-    {CGROUP_SUBSYSTEM_NET_CLS_NAME, &NetClsSubsystem::create},
-    {CGROUP_SUBSYSTEM_NET_PRIO_NAME, &NetPrioSubsystem::create},
-    {CGROUP_SUBSYSTEM_PERF_EVENT_NAME, &PerfEventSubsystem::create},
-    {CGROUP_SUBSYSTEM_PIDS_NAME, &PidsSubsystem::create},
+    {CGROUP_SUBSYSTEM_BLKIO_NAME, &BlkioSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_CPU_NAME, &CpuSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_CPUACCT_NAME, &CpuacctSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_CPUSET_NAME, &CpusetSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_DEVICES_NAME, &DevicesSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_HUGETLB_NAME, &HugetlbSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_MEMORY_NAME, &MemorySubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_NET_CLS_NAME, &NetClsSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_NET_PRIO_NAME, &NetPrioSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_PERF_EVENT_NAME, &PerfEventSubsystemProcess::create},
+    {CGROUP_SUBSYSTEM_PIDS_NAME, &PidsSubsystemProcess::create},
   };
 
   if (!creators.contains(name)) {
     return Error("Unknown subsystem '" + name + "'");
   }
 
-  Try<Owned<Subsystem>> subsystem = creators[name](flags, hierarchy);
-  if (subsystem.isError()) {
+  Try<Owned<SubsystemProcess>> subsystemProcess =
+    creators[name](flags, hierarchy);
+
+  if (subsystemProcess.isError()) {
     return Error(
         "Failed to create subsystem '" + name + "': " +
-        subsystem.error());
+        subsystemProcess.error());
   }
 
-  return subsystem.get();
+  return subsystemProcess.get();
 }
 
 
-Subsystem::Subsystem(
+SubsystemProcess::SubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : flags(_flags),
     hierarchy(_hierarchy) {}
 
 
-Future<Nothing> Subsystem::recover(
+Future<Nothing> SubsystemProcess::recover(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -93,7 +95,7 @@ Future<Nothing> Subsystem::recover(
 }
 
 
-Future<Nothing> Subsystem::prepare(
+Future<Nothing> SubsystemProcess::prepare(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -101,7 +103,7 @@ Future<Nothing> Subsystem::prepare(
 }
 
 
-Future<Nothing> Subsystem::isolate(
+Future<Nothing> SubsystemProcess::isolate(
     const ContainerID& containerId,
     const string& cgroup,
     pid_t pid)
@@ -110,7 +112,7 @@ Future<Nothing> Subsystem::isolate(
 }
 
 
-Future<ContainerLimitation> Subsystem::watch(
+Future<ContainerLimitation> SubsystemProcess::watch(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -118,7 +120,7 @@ Future<ContainerLimitation> Subsystem::watch(
 }
 
 
-Future<Nothing> Subsystem::update(
+Future<Nothing> SubsystemProcess::update(
     const ContainerID& containerId,
     const string& cgroup,
     const Resources& resources)
@@ -127,7 +129,7 @@ Future<Nothing> Subsystem::update(
 }
 
 
-Future<ResourceStatistics> Subsystem::usage(
+Future<ResourceStatistics> SubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -135,7 +137,7 @@ Future<ResourceStatistics> Subsystem::usage(
 }
 
 
-Future<ContainerStatus> Subsystem::status(
+Future<ContainerStatus> SubsystemProcess::status(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -143,7 +145,7 @@ Future<ContainerStatus> Subsystem::status(
 }
 
 
-Future<Nothing> Subsystem::cleanup(
+Future<Nothing> SubsystemProcess::cleanup(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
index 65c1e47..c99a00c 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystem.hpp
@@ -39,7 +39,7 @@ namespace slave {
 /**
  * An abstraction for cgroups subsystem.
  */
-class Subsystem : public process::Process<Subsystem>
+class SubsystemProcess : public process::Process<SubsystemProcess>
 {
 public:
   /**
@@ -51,12 +51,12 @@ public:
    * @param hierarchy The hierarchy path of cgroups subsystem.
    * @return A specific `Subsystem` object or an error if `create` fails.
    */
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& name,
       const std::string& hierarchy);
 
-  virtual ~Subsystem() {}
+  virtual ~SubsystemProcess() {}
 
   /**
    * The cgroups subsystem name of this `Subsystem` object.
@@ -168,7 +168,7 @@ public:
       const std::string& cgroup);
 
 protected:
-  Subsystem(const Flags& _flags, const std::string& _hierarchy);
+  SubsystemProcess(const Flags& _flags, const std::string& _hierarchy);
 
   /**
    * `Flags` used to launch the agent.

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.cpp
index cba21ed..fbf1fed 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.cpp
@@ -47,19 +47,19 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> BlkioSubsystem::create(
+Try<Owned<SubsystemProcess>> BlkioSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new BlkioSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new BlkioSubsystemProcess(flags, hierarchy));
 }
 
 
-BlkioSubsystem::BlkioSubsystem(
+BlkioSubsystemProcess::BlkioSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-blkio-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 
 static void setValue(
@@ -92,7 +92,7 @@ static void setValue(
 }
 
 
-Future<ResourceStatistics> BlkioSubsystem::usage(
+Future<ResourceStatistics> BlkioSubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
index 7d6bb9b..31ef618 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/blkio.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups blkio subsystem.
  */
-class BlkioSubsystem : public Subsystem
+class BlkioSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~BlkioSubsystem() override = default;
+  ~BlkioSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -54,7 +54,7 @@ public:
       const std::string& cgroup) override;
 
 private:
-  BlkioSubsystem(const Flags& flags, const std::string& hierarchy);
+  BlkioSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.cpp
index 75fab0f..321671f 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.cpp
@@ -33,7 +33,7 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> CpuSubsystem::create(
+Try<Owned<SubsystemProcess>> CpuSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
@@ -54,18 +54,18 @@ Try<Owned<Subsystem>> CpuSubsystem::create(
     }
   }
 
-  return Owned<Subsystem>(new CpuSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new CpuSubsystemProcess(flags, hierarchy));
 }
 
 
-CpuSubsystem::CpuSubsystem(
+CpuSubsystemProcess::CpuSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-cpu-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 
-Future<Nothing> CpuSubsystem::update(
+Future<Nothing> CpuSubsystemProcess::update(
     const ContainerID& containerId,
     const string& cgroup,
     const Resources& resources)
@@ -128,7 +128,7 @@ Future<Nothing> CpuSubsystem::update(
 }
 
 
-Future<ResourceStatistics> CpuSubsystem::usage(
+Future<ResourceStatistics> CpuSubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
index 01d14ab..02e7163 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpu.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups cpu subsystem.
  */
-class CpuSubsystem : public Subsystem
+class CpuSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~CpuSubsystem() override = default;
+  ~CpuSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -59,7 +59,7 @@ public:
       const std::string& cgroup) override;
 
 private:
-  CpuSubsystem(const Flags& flags, const std::string& hierarchy);
+  CpuSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.cpp
index 3be419a..e0ee2f3 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.cpp
@@ -31,22 +31,22 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> CpuacctSubsystem::create(
+Try<Owned<SubsystemProcess>> CpuacctSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new CpuacctSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new CpuacctSubsystemProcess(flags, hierarchy));
 }
 
 
-CpuacctSubsystem::CpuacctSubsystem(
+CpuacctSubsystemProcess::CpuacctSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-cpuacct-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 
-Future<ResourceStatistics> CpuacctSubsystem::usage(
+Future<ResourceStatistics> CpuacctSubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
index 60d348c..33842b5 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuacct.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups cpuacct subsystem.
  */
-class CpuacctSubsystem : public Subsystem
+class CpuacctSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~CpuacctSubsystem() override = default;
+  ~CpuacctSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -54,7 +54,7 @@ public:
       const std::string& cgroup) override;
 
 private:
-  CpuacctSubsystem(const Flags& flags, const std::string& hierarchy);
+  CpuacctSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.cpp
index 328ebc6..06a9ae6 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.cpp
@@ -26,19 +26,19 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> CpusetSubsystem::create(
+Try<Owned<SubsystemProcess>> CpusetSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new CpusetSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new CpusetSubsystemProcess(flags, hierarchy));
 }
 
 
-CpusetSubsystem::CpusetSubsystem(
+CpusetSubsystemProcess::CpusetSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-cpuset-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 } // namespace slave {
 } // namespace internal {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
index 1360d0f..0bf4a1f 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/cpuset.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups cpuset subsystem.
  */
-class CpusetSubsystem : public Subsystem
+class CpusetSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~CpusetSubsystem() override = default;
+  ~CpusetSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -50,7 +50,7 @@ public:
   };
 
 private:
-  CpusetSubsystem(const Flags& flags, const std::string& hierarchy);
+  CpusetSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.cpp
index 4c43191..5d44b14 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.cpp
@@ -69,7 +69,7 @@ static const char* DEFAULT_WHITELIST_ENTRIES[] = {
 };
 
 
-Try<Owned<Subsystem>> DevicesSubsystem::create(
+Try<Owned<SubsystemProcess>> DevicesSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
@@ -137,21 +137,21 @@ Try<Owned<Subsystem>> DevicesSubsystem::create(
     }
   }
 
-  return Owned<Subsystem>(
-      new DevicesSubsystem(flags, hierarchy, whitelistDeviceEntries));
+  return Owned<SubsystemProcess>(
+      new DevicesSubsystemProcess(flags, hierarchy, whitelistDeviceEntries));
 }
 
 
-DevicesSubsystem::DevicesSubsystem(
+DevicesSubsystemProcess::DevicesSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy,
     const vector<cgroups::devices::Entry>& _whitelistDeviceEntries)
   : ProcessBase(process::ID::generate("cgroups-devices-subsystem")),
-    Subsystem(_flags, _hierarchy),
+    SubsystemProcess(_flags, _hierarchy),
     whitelistDeviceEntries(_whitelistDeviceEntries) {}
 
 
-Future<Nothing> DevicesSubsystem::recover(
+Future<Nothing> DevicesSubsystemProcess::recover(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -167,7 +167,7 @@ Future<Nothing> DevicesSubsystem::recover(
 }
 
 
-Future<Nothing> DevicesSubsystem::prepare(
+Future<Nothing> DevicesSubsystemProcess::prepare(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -219,7 +219,7 @@ Future<Nothing> DevicesSubsystem::prepare(
 }
 
 
-Future<Nothing> DevicesSubsystem::cleanup(
+Future<Nothing> DevicesSubsystemProcess::cleanup(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
index 4f48ca0..c62deec 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/devices.hpp
@@ -39,14 +39,14 @@ namespace slave {
 /**
  * Represent cgroups devices subsystem.
  */
-class DevicesSubsystem: public Subsystem
+class DevicesSubsystemProcess: public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~DevicesSubsystem() override = default;
+  ~DevicesSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -66,7 +66,7 @@ public:
       const std::string& cgroup) override;
 
 private:
-  DevicesSubsystem(
+  DevicesSubsystemProcess(
       const Flags& flags,
       const std::string& hierarchy,
       const std::vector<cgroups::devices::Entry>& whitelistDeviceEntries);

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.cpp
index 0af4d2e..c29aaa5 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.cpp
@@ -26,19 +26,19 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> HugetlbSubsystem::create(
+Try<Owned<SubsystemProcess>> HugetlbSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new HugetlbSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new HugetlbSubsystemProcess(flags, hierarchy));
 }
 
 
-HugetlbSubsystem::HugetlbSubsystem(
+HugetlbSubsystemProcess::HugetlbSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-hugetlb-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 } // namespace slave {
 } // namespace internal {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
index 98d50a6..c71a5c2 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/hugetlb.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups hugetlb subsystem.
  */
-class HugetlbSubsystem : public Subsystem
+class HugetlbSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~HugetlbSubsystem() override = default;
+  ~HugetlbSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -50,7 +50,7 @@ public:
   };
 
 private:
-  HugetlbSubsystem(const Flags& flags, const std::string& hierarchy);
+  HugetlbSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp
index 50348d6..33dd6d9 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp
@@ -58,7 +58,7 @@ static const vector<Level> levels()
 }
 
 
-Try<Owned<Subsystem>> MemorySubsystem::create(
+Try<Owned<SubsystemProcess>> MemorySubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
@@ -104,18 +104,18 @@ Try<Owned<Subsystem>> MemorySubsystem::create(
     }
   }
 
-  return Owned<Subsystem>(new MemorySubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new MemorySubsystemProcess(flags, hierarchy));
 }
 
 
-MemorySubsystem::MemorySubsystem(
+MemorySubsystemProcess::MemorySubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-memory-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 
-Future<Nothing> MemorySubsystem::recover(
+Future<Nothing> MemorySubsystemProcess::recover(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -132,7 +132,7 @@ Future<Nothing> MemorySubsystem::recover(
 }
 
 
-Future<Nothing> MemorySubsystem::prepare(
+Future<Nothing> MemorySubsystemProcess::prepare(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -149,7 +149,7 @@ Future<Nothing> MemorySubsystem::prepare(
 }
 
 
-Future<ContainerLimitation> MemorySubsystem::watch(
+Future<ContainerLimitation> MemorySubsystemProcess::watch(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -163,7 +163,7 @@ Future<ContainerLimitation> MemorySubsystem::watch(
 }
 
 
-Future<Nothing> MemorySubsystem::update(
+Future<Nothing> MemorySubsystemProcess::update(
     const ContainerID& containerId,
     const string& cgroup,
     const Resources& resources)
@@ -300,7 +300,7 @@ Future<Nothing> MemorySubsystem::update(
 }
 
 
-Future<ResourceStatistics> MemorySubsystem::usage(
+Future<ResourceStatistics> MemorySubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -389,8 +389,8 @@ Future<ResourceStatistics> MemorySubsystem::usage(
   }
 
   return await(values)
-    .then(defer(PID<MemorySubsystem>(this),
-                &MemorySubsystem::_usage,
+    .then(defer(PID<MemorySubsystemProcess>(this),
+                &MemorySubsystemProcess::_usage,
                 containerId,
                 result,
                 levels,
@@ -398,7 +398,7 @@ Future<ResourceStatistics> MemorySubsystem::usage(
 }
 
 
-Future<ResourceStatistics> MemorySubsystem::_usage(
+Future<ResourceStatistics> MemorySubsystemProcess::_usage(
     const ContainerID& containerId,
     ResourceStatistics result,
     const list<Level>& levels,
@@ -437,7 +437,7 @@ Future<ResourceStatistics> MemorySubsystem::_usage(
 }
 
 
-Future<Nothing> MemorySubsystem::cleanup(
+Future<Nothing> MemorySubsystemProcess::cleanup(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -458,7 +458,7 @@ Future<Nothing> MemorySubsystem::cleanup(
 }
 
 
-void MemorySubsystem::oomListen(
+void MemorySubsystemProcess::oomListen(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -480,15 +480,15 @@ void MemorySubsystem::oomListen(
             << containerId;
 
   info->oomNotifier.onReady(
-      defer(PID<MemorySubsystem>(this),
-            &MemorySubsystem::oomWaited,
+      defer(PID<MemorySubsystemProcess>(this),
+            &MemorySubsystemProcess::oomWaited,
             containerId,
             cgroup,
             lambda::_1));
 }
 
 
-void MemorySubsystem::oomWaited(
+void MemorySubsystemProcess::oomWaited(
     const ContainerID& containerId,
     const string& cgroup,
     const Future<Nothing>& future)
@@ -572,7 +572,7 @@ void MemorySubsystem::oomWaited(
 }
 
 
-void MemorySubsystem::pressureListen(
+void MemorySubsystemProcess::pressureListen(
     const ContainerID& containerId,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
index 654ccb9..1d49cef 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.hpp
@@ -41,14 +41,14 @@ namespace slave {
 /**
  * Represent cgroups memory subsystem.
  */
-class MemorySubsystem : public Subsystem
+class MemorySubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~MemorySubsystem() override = default;
+  ~MemorySubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -93,7 +93,7 @@ private:
     process::Promise<mesos::slave::ContainerLimitation> limitation;
   };
 
-  MemorySubsystem(const Flags& flags, const std::string& hierarchy);
+  MemorySubsystemProcess(const Flags& flags, const std::string& hierarchy);
 
   process::Future<ResourceStatistics> _usage(
       const ContainerID& containerId,

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.cpp
index f778a41..ec2ce67 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.cpp
@@ -221,7 +221,7 @@ Try<bool> NetClsHandleManager::isUsed(const NetClsHandle& handle)
 }
 
 
-Try<Owned<Subsystem>> NetClsSubsystem::create(
+Try<Owned<SubsystemProcess>> NetClsSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
@@ -289,18 +289,18 @@ Try<Owned<Subsystem>> NetClsSubsystem::create(
     }
   }
 
-  return Owned<Subsystem>(
-      new NetClsSubsystem(flags, hierarchy, primaries, secondaries));
+  return Owned<SubsystemProcess>(
+      new NetClsSubsystemProcess(flags, hierarchy, primaries, secondaries));
 }
 
 
-NetClsSubsystem::NetClsSubsystem(
+NetClsSubsystemProcess::NetClsSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy,
     const IntervalSet<uint32_t>& primaries,
     const IntervalSet<uint32_t>& secondaries)
   : ProcessBase(process::ID::generate("cgroups-net-cls-subsystem")),
-    Subsystem(_flags, _hierarchy)
+    SubsystemProcess(_flags, _hierarchy)
 {
   if (!primaries.empty()) {
     handleManager = NetClsHandleManager(primaries, secondaries);
@@ -308,7 +308,7 @@ NetClsSubsystem::NetClsSubsystem(
 }
 
 
-Future<Nothing> NetClsSubsystem::recover(
+Future<Nothing> NetClsSubsystemProcess::recover(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -334,7 +334,7 @@ Future<Nothing> NetClsSubsystem::recover(
 }
 
 
-Future<Nothing> NetClsSubsystem::prepare(
+Future<Nothing> NetClsSubsystemProcess::prepare(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -361,7 +361,7 @@ Future<Nothing> NetClsSubsystem::prepare(
 }
 
 
-Future<Nothing> NetClsSubsystem::isolate(
+Future<Nothing> NetClsSubsystemProcess::isolate(
     const ContainerID& containerId,
     const string& cgroup,
     pid_t pid)
@@ -393,7 +393,7 @@ Future<Nothing> NetClsSubsystem::isolate(
 }
 
 
-Future<ContainerStatus> NetClsSubsystem::status(
+Future<ContainerStatus> NetClsSubsystemProcess::status(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -421,7 +421,7 @@ Future<ContainerStatus> NetClsSubsystem::status(
 }
 
 
-Future<Nothing> NetClsSubsystem::cleanup(
+Future<Nothing> NetClsSubsystemProcess::cleanup(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -447,7 +447,7 @@ Future<Nothing> NetClsSubsystem::cleanup(
 }
 
 
-Result<NetClsHandle> NetClsSubsystem::recoverHandle(
+Result<NetClsHandle> NetClsSubsystemProcess::recoverHandle(
     const string& hierarchy,
     const string& cgroup)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
index be36659..0653107 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_cls.hpp
@@ -130,14 +130,14 @@ private:
 /**
  * Represent cgroups net_cls subsystem.
  */
-class NetClsSubsystem : public Subsystem
+class NetClsSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~NetClsSubsystem() override = default;
+  ~NetClsSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -166,7 +166,7 @@ public:
       const std::string& cgroup) override;
 
 private:
-  NetClsSubsystem(
+  NetClsSubsystemProcess(
       const Flags& flags,
       const std::string& hierarchy,
       const IntervalSet<uint32_t>& primaries,

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.cpp
index 060556b..932acfd 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.cpp
@@ -26,19 +26,19 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> NetPrioSubsystem::create(
+Try<Owned<SubsystemProcess>> NetPrioSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new NetPrioSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new NetPrioSubsystemProcess(flags, hierarchy));
 }
 
 
-NetPrioSubsystem::NetPrioSubsystem(
+NetPrioSubsystemProcess::NetPrioSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-net-prio-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 } // namespace slave {
 } // namespace internal {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
index e6bb83f..cf9da45 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/net_prio.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups net_prio subsystem.
  */
-class NetPrioSubsystem : public Subsystem
+class NetPrioSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~NetPrioSubsystem() override = default;
+  ~NetPrioSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -50,7 +50,7 @@ public:
   };
 
 private:
-  NetPrioSubsystem(const Flags& flags, const std::string& hierarchy);
+  NetPrioSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.cpp
index d394d79..06eca0c 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.cpp
@@ -40,7 +40,7 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> PerfEventSubsystem::create(
+Try<Owned<SubsystemProcess>> PerfEventSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
@@ -73,27 +73,28 @@ Try<Owned<Subsystem>> PerfEventSubsystem::create(
             << "every '" << flags.perf_interval << "' "
             << "for events: " << stringify(events);
 
-  return Owned<Subsystem>(new PerfEventSubsystem(flags, hierarchy, events));
+  return Owned<SubsystemProcess>(
+      new PerfEventSubsystemProcess(flags, hierarchy, events));
 }
 
 
-PerfEventSubsystem::PerfEventSubsystem(
+PerfEventSubsystemProcess::PerfEventSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy,
     const set<string>& _events)
   : ProcessBase(process::ID::generate("cgroups-perf-event-subsystem")),
-    Subsystem(_flags, _hierarchy),
+    SubsystemProcess(_flags, _hierarchy),
     events(_events) {}
 
 
-void PerfEventSubsystem::initialize()
+void PerfEventSubsystemProcess::initialize()
 {
   // Start sampling.
   sample();
 }
 
 
-Future<Nothing> PerfEventSubsystem::recover(
+Future<Nothing> PerfEventSubsystemProcess::recover(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -107,7 +108,7 @@ Future<Nothing> PerfEventSubsystem::recover(
 }
 
 
-Future<Nothing> PerfEventSubsystem::prepare(
+Future<Nothing> PerfEventSubsystemProcess::prepare(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -121,7 +122,7 @@ Future<Nothing> PerfEventSubsystem::prepare(
 }
 
 
-Future<ResourceStatistics> PerfEventSubsystem::usage(
+Future<ResourceStatistics> PerfEventSubsystemProcess::usage(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -138,7 +139,7 @@ Future<ResourceStatistics> PerfEventSubsystem::usage(
 }
 
 
-Future<Nothing> PerfEventSubsystem::cleanup(
+Future<Nothing> PerfEventSubsystemProcess::cleanup(
     const ContainerID& containerId,
     const string& cgroup)
 {
@@ -155,7 +156,7 @@ Future<Nothing> PerfEventSubsystem::cleanup(
 }
 
 
-void PerfEventSubsystem::sample()
+void PerfEventSubsystemProcess::sample()
 {
   // Collect a perf sample for all cgroups that are not being
   // destroyed. Since destroyal is asynchronous, 'perf stat' may
@@ -181,14 +182,14 @@ void PerfEventSubsystem::sample()
 
       return future;
     })
-    .onAny(defer(PID<PerfEventSubsystem>(this),
-                 &PerfEventSubsystem::_sample,
+    .onAny(defer(PID<PerfEventSubsystemProcess>(this),
+                 &PerfEventSubsystemProcess::_sample,
                  Clock::now() + flags.perf_interval,
                  lambda::_1));
 }
 
 
-void PerfEventSubsystem::_sample(
+void PerfEventSubsystemProcess::_sample(
     const Time& next,
     const Future<hashmap<string, PerfStatistics>>& statistics)
 {
@@ -210,8 +211,8 @@ void PerfEventSubsystem::_sample(
 
   // Schedule sample for the next time.
   delay(next - Clock::now(),
-        PID<PerfEventSubsystem>(this),
-        &PerfEventSubsystem::sample);
+        PID<PerfEventSubsystemProcess>(this),
+        &PerfEventSubsystemProcess::sample);
 }
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
index a55cdef..2c865ac 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/perf_event.hpp
@@ -41,14 +41,14 @@ namespace slave {
 /**
  * Represent cgroups perf_event subsystem.
  */
-class PerfEventSubsystem: public Subsystem
+class PerfEventSubsystemProcess: public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~PerfEventSubsystem() override = default;
+  ~PerfEventSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -75,7 +75,7 @@ protected:
   void initialize() override;
 
 private:
-  PerfEventSubsystem(
+  PerfEventSubsystemProcess(
       const Flags& flags,
       const std::string& hierarchy,
       const std::set<std::string>& events);

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.cpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.cpp
index 42fea60..2e6d1e7 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.cpp
@@ -26,19 +26,19 @@ namespace mesos {
 namespace internal {
 namespace slave {
 
-Try<Owned<Subsystem>> PidsSubsystem::create(
+Try<Owned<SubsystemProcess>> PidsSubsystemProcess::create(
     const Flags& flags,
     const string& hierarchy)
 {
-  return Owned<Subsystem>(new PidsSubsystem(flags, hierarchy));
+  return Owned<SubsystemProcess>(new PidsSubsystemProcess(flags, hierarchy));
 }
 
 
-PidsSubsystem::PidsSubsystem(
+PidsSubsystemProcess::PidsSubsystemProcess(
     const Flags& _flags,
     const string& _hierarchy)
   : ProcessBase(process::ID::generate("cgroups-pids-subsystem")),
-    Subsystem(_flags, _hierarchy) {}
+    SubsystemProcess(_flags, _hierarchy) {}
 
 } // namespace slave {
 } // namespace internal {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1168de48/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
index e0f344d..6583a03 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups/subsystems/pids.hpp
@@ -35,14 +35,14 @@ namespace slave {
 /**
  * Represent cgroups pids subsystem.
  */
-class PidsSubsystem : public Subsystem
+class PidsSubsystemProcess : public SubsystemProcess
 {
 public:
-  static Try<process::Owned<Subsystem>> create(
+  static Try<process::Owned<SubsystemProcess>> create(
       const Flags& flags,
       const std::string& hierarchy);
 
-  ~PidsSubsystem() override = default;
+  ~PidsSubsystemProcess() override = default;
 
   std::string name() const override
   {
@@ -50,7 +50,7 @@ public:
   };
 
 private:
-  PidsSubsystem(const Flags& flags, const std::string& hierarchy);
+  PidsSubsystemProcess(const Flags& flags, const std::string& hierarchy);
 };
 
 } // namespace slave {