This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
The following commit(s) were added to refs/heads/master by this push:
new 3a83390eb [cgroups2] Report usage statistics for the cgroups v2
isolator process.
3a83390eb is described below
commit 3a83390ebc118cb5e2837b5cb9eee79a3b8e4d42
Author: Devin Leamy <[email protected]>
AuthorDate: Wed Apr 24 17:39:04 2024 -0400
[cgroups2] Report usage statistics for the cgroups v2 isolator process.
Overrides `::usage` for the `Cgroups2IsolatorProcess` so the
MesosContainerizer gets ResourceStatistics reported by the
cgroups v2 controllers processes, for example the `CpuControllerProcess`.
---
.../mesos/isolators/cgroups2/cgroups2.cpp | 36 ++++++++++++++++++++++
.../mesos/isolators/cgroups2/cgroups2.hpp | 3 ++
2 files changed, 39 insertions(+)
diff --git a/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.cpp
b/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.cpp
index 762e34380..a53e65cfb 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.cpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.cpp
@@ -674,6 +674,42 @@ Future<Nothing> Cgroups2IsolatorProcess::_update(
}
+Future<ResourceStatistics> Cgroups2IsolatorProcess::usage(
+ const ContainerID& containerId)
+{
+ if (!infos.contains(containerId)) {
+ return Failure("Unknown container");
+ }
+
+ vector<Future<ResourceStatistics>> usages;
+ foreachvalue (const Owned<Controller>& controller, controllers) {
+ if (infos[containerId]->controllers.contains(controller->name())) {
+ usages.push_back(controller->usage(
+ containerId,
+ infos[containerId]->cgroup));
+ }
+ }
+
+ return await(usages)
+ .then([containerId](const vector<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;
+ });
+}
+
+
Future<ContainerStatus> Cgroups2IsolatorProcess::status(
const ContainerID& containerId)
{
diff --git a/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.hpp
b/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.hpp
index b2d06b490..9d58b9e7f 100644
--- a/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.hpp
+++ b/src/slave/containerizer/mesos/isolators/cgroups2/cgroups2.hpp
@@ -82,6 +82,9 @@ public:
const google::protobuf::Map<
std::string, Value::Scalar>& resourceLimits = {}) override;
+ process::Future<ResourceStatistics> usage(
+ const ContainerID& containerId) override;
+
process::Future<ContainerStatus> status(
const ContainerID& containerId) override;