This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch resource_ctx
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/resource_ctx by this push:
new 94313688ef4 f
94313688ef4 is described below
commit 94313688ef44a6e6235219aac7e51d7ca1d2ae44
Author: yiguolei <[email protected]>
AuthorDate: Fri Dec 6 23:46:29 2024 +0800
f
---
be/src/runtime/workload_management/cpu_context.h | 8 +++++++-
be/src/runtime/workload_management/io_context.h | 8 +++++++-
be/src/runtime/workload_management/memory_context.h | 8 +++++---
be/src/runtime/workload_management/resource_context.h | 4 ++++
4 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/be/src/runtime/workload_management/cpu_context.h
b/be/src/runtime/workload_management/cpu_context.h
index 05b2c94a64e..6bf9c95bf98 100644
--- a/be/src/runtime/workload_management/cpu_context.h
+++ b/be/src/runtime/workload_management/cpu_context.h
@@ -45,7 +45,13 @@ public:
CPUContext() {}
virtual ~CPUContext() = default;
// Bind current thread to cgroup, only some load thread should do this.
- void bind_workload_group() {}
+ void bind_workload_group() {
+ // Call workload group method to bind current thread to cgroup
+ }
+ CPUStats* cpu_stats() { return &stats_; }
+
+private:
+ CPUStats stats_;
};
} // namespace doris
diff --git a/be/src/runtime/workload_management/io_context.h
b/be/src/runtime/workload_management/io_context.h
index 886e436a3bf..b4dd5a0b6c1 100644
--- a/be/src/runtime/workload_management/io_context.h
+++ b/be/src/runtime/workload_management/io_context.h
@@ -75,7 +75,13 @@ public:
public:
IOContext() {}
virtual ~IOContext() = default;
- IOThrottle* io_throttle() {}
+ IOThrottle* io_throttle() {
+ // get io throttle from workload group
+ }
+ IOStats* stats() { return &stats_; }
+
+private:
+ IOStats stats_;
};
} // namespace doris
diff --git a/be/src/runtime/workload_management/memory_context.h
b/be/src/runtime/workload_management/memory_context.h
index 7e62c1bc687..cf7a80010d4 100644
--- a/be/src/runtime/workload_management/memory_context.h
+++ b/be/src/runtime/workload_management/memory_context.h
@@ -65,7 +65,9 @@ public:
virtual ~MemoryContext() = default;
- MemtrackerLimiter* get_memtracker_limiter() {}
+ MemtrackerLimiter* memtracker_limiter() { return
memtracker_limiter_.get(); }
+
+ MemoryStats* stats() { return &stats_; }
// Following method is related with spill disk.
// Compute the number of bytes could be released.
@@ -81,8 +83,8 @@ public:
virtual Status leave_arbitration(Status reason) { return Status::OK(); }
private:
- // std::weak_ptr<WorkloadGroup> workload_group_;
- std::weak_ptr<MemtrackerLimiter> memtracker_limiter_;
+ MemoryStats stats_;
+ std::shared_ptr<MemtrackerLimiter> memtracker_limiter_;
};
} // namespace doris
diff --git a/be/src/runtime/workload_management/resource_context.h
b/be/src/runtime/workload_management/resource_context.h
index b5e5400165b..5f910c590d0 100644
--- a/be/src/runtime/workload_management/resource_context.h
+++ b/be/src/runtime/workload_management/resource_context.h
@@ -52,6 +52,7 @@ public:
}
virtual ~ResourceContext() = default;
+ // The caller should not hold the object, since it is a raw pointer.
CPUContext* cpu_context() { return cpu_context_.get(); }
MemoryContext* memory_context() { return memory_context_.get(); }
IOContext* io_context() { return io_context_.get(); }
@@ -69,6 +70,8 @@ public:
workload_group_ = wg;
}
+ std::shared_ptr<WorkloadGroup> workload_group() { return
workload_group_.lock(); }
+
private:
// The controller's init value is nullptr, it means the resource context
will ignore this controller.
std::shared_ptr<CPUContext> cpu_context_ = nullptr;
@@ -76,6 +79,7 @@ private:
std::shared_ptr<IOContext> io_context_ = nullptr;
std::shared_ptr<ResourceReclaimer> reclaimer_ = nullptr;
// Workload group will own resource context, so that resource context only
have weak ptr for workload group.
+ // TODO: should use atomic weak ptr to avoid the concurrent modification
of the pointer.
std::weak_ptr<WorkloadGroup> workload_group_ = nullptr;
};
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]