wangbo commented on code in PR #19924:
URL: https://github.com/apache/doris/pull/19924#discussion_r1219122237
##########
be/src/runtime/task_group/task_group.h:
##########
@@ -31,46 +30,75 @@
namespace doris {
-namespace pipeline {
-class PipelineTask;
-}
-
class TPipelineWorkloadGroup;
class MemTrackerLimiter;
+namespace pipeline {
+class PipelineTask;
+class TaskQueue;
+class PriorityTaskQueue;
+} // namespace pipeline
+
namespace taskgroup {
class TaskGroup;
struct TaskGroupInfo;
+class ScanTaskQueue;
+class ScanTaskTaskGroupQueue;
+template <typename QueueType, typename ParentQueueType>
class TaskGroupEntity {
public:
- explicit TaskGroupEntity(taskgroup::TaskGroup* ts) : _tg(ts) {}
- void push_back(pipeline::PipelineTask* task);
+ TaskGroupEntity(taskgroup::TaskGroup* tg, ParentQueueType* in_queue);
+ ~TaskGroupEntity();
+
uint64_t vruntime_ns() const { return _vruntime_ns; }
- pipeline::PipelineTask* take();
+ QueueType* task_queue();
+
+ // TODO llj tg: Compare with the entity with the smallest vtime in
`_queue_contains_me` to
+ // determine whether yield is needed
+ bool should_yield(uint64_t runtime_ns) const { return false; }
void incr_runtime_ns(uint64_t runtime_ns);
void adjust_vruntime_ns(uint64_t vruntime_ns);
- size_t task_size() const { return _queue.size(); }
+ size_t task_size() const;
uint64_t cpu_share() const;
std::string debug_string() const;
uint64_t task_group_id() const;
+ void check_and_update_cpu_share(const TaskGroupInfo& tg_info);
+ // 1. `_queue_contains_me` lock and prohibit the increase or decrease of
tasks
+ // 2. If entity in `_queue_contains_me`, total_cpu_share in
`_queue_contains_me`
+ // minus old cpu_share value
+ // 3. update this entity's cpu_share
+ // 4. If entity in `_queue_contains_me`, total_cpu_share in
`_queue_contains_me`
+ // add new cpu_share value
+ void update_cpu_share(const TaskGroupInfo& tg_info);
+
private:
- // TODO pipeline use MLFQ
- std::queue<pipeline::PipelineTask*> _queue;
- taskgroup::TaskGroup* _tg;
+ QueueType* _task_queue;
+
uint64_t _vruntime_ns = 0;
+ taskgroup::TaskGroup* _tg;
+
+ int64_t _version;
+ uint64_t _cpu_share;
Review Comment:
Add a comment to explain why TaskGroupEntity need store a _cpu_share when
group has kept cpu_share
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]