* Re: [PATCH -next] sched: Add update_current_exec_runtime helper
2022-08-24 6:53 [PATCH -next] sched: Add update_current_exec_runtime helper Shang XiaoJing
@ 2022-08-24 6:38 ` Peter Zijlstra
2022-08-24 7:29 ` shangxiaojing
0 siblings, 1 reply; 3+ messages in thread
From: Peter Zijlstra @ 2022-08-24 6:38 UTC (permalink / raw)
To: Shang XiaoJing
Cc: mingo, juri.lelli, vincent.guittot, dietmar.eggemann, rostedt,
bsegall, mgorman, bristot, vschneid, linux-kernel
On Wed, Aug 24, 2022 at 02:53:26PM +0800, Shang XiaoJing wrote:
In general I like, however:
> diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c
> index d04073a93eb4..027068779126 100644
> --- a/kernel/sched/stop_task.c
> +++ b/kernel/sched/stop_task.c
> @@ -80,11 +80,7 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev)
> schedstat_set(curr->stats.exec_max,
> max(curr->stats.exec_max, delta_exec));
>
> - curr->se.sum_exec_runtime += delta_exec;
> - account_group_exec_runtime(curr, delta_exec);
> -
> - curr->se.exec_start = rq_clock_task(rq);
> - cgroup_account_cputime(curr, delta_exec);
> + update_current_exec_runtime(curr, rq_clock_task(rq), delta_exec);
> }
This already has a rq_clock_task() invocation; please fix it to call it
once -- pre-existing issue, but if we're cleaning up we should clean up,
right :-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH -next] sched: Add update_current_exec_runtime helper
@ 2022-08-24 6:53 Shang XiaoJing
2022-08-24 6:38 ` Peter Zijlstra
0 siblings, 1 reply; 3+ messages in thread
From: Shang XiaoJing @ 2022-08-24 6:53 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
rostedt, bsegall, mgorman, bristot, vschneid, linux-kernel
Cc: shangxiaojing
Wrap repeated code in helper function update_current_exec_runtime for
update the exec time of the current.
Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
---
kernel/sched/deadline.c | 6 +-----
kernel/sched/rt.c | 6 +-----
kernel/sched/sched.h | 10 ++++++++++
kernel/sched/stop_task.c | 6 +-----
4 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index daa9a7fb5917..d116d2b9d2f9 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -1333,11 +1333,7 @@ static void update_curr_dl(struct rq *rq)
trace_sched_stat_runtime(curr, delta_exec, 0);
- curr->se.sum_exec_runtime += delta_exec;
- account_group_exec_runtime(curr, delta_exec);
-
- curr->se.exec_start = now;
- cgroup_account_cputime(curr, delta_exec);
+ update_current_exec_runtime(curr, now, delta_exec);
if (dl_entity_is_special(dl_se))
return;
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index cd07c9367bc2..27e694cf3e37 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -1062,11 +1062,7 @@ static void update_curr_rt(struct rq *rq)
trace_sched_stat_runtime(curr, delta_exec, 0);
- curr->se.sum_exec_runtime += delta_exec;
- account_group_exec_runtime(curr, delta_exec);
-
- curr->se.exec_start = now;
- cgroup_account_cputime(curr, delta_exec);
+ update_current_exec_runtime(curr, now, delta_exec);
if (!rt_bandwidth_enabled())
return;
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index ddcfc7837595..7ad65f79cb59 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -3163,4 +3163,14 @@ extern int sched_dynamic_mode(const char *str);
extern void sched_dynamic_update(int mode);
#endif
+static inline void update_current_exec_runtime(struct task_struct *curr,
+ u64 now, u64 delta_exec)
+{
+ curr->se.sum_exec_runtime += delta_exec;
+ account_group_exec_runtime(curr, delta_exec);
+
+ curr->se.exec_start = now;
+ cgroup_account_cputime(curr, delta_exec);
+}
+
#endif /* _KERNEL_SCHED_SCHED_H */
diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c
index d04073a93eb4..027068779126 100644
--- a/kernel/sched/stop_task.c
+++ b/kernel/sched/stop_task.c
@@ -80,11 +80,7 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev)
schedstat_set(curr->stats.exec_max,
max(curr->stats.exec_max, delta_exec));
- curr->se.sum_exec_runtime += delta_exec;
- account_group_exec_runtime(curr, delta_exec);
-
- curr->se.exec_start = rq_clock_task(rq);
- cgroup_account_cputime(curr, delta_exec);
+ update_current_exec_runtime(curr, rq_clock_task(rq), delta_exec);
}
/*
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH -next] sched: Add update_current_exec_runtime helper
2022-08-24 6:38 ` Peter Zijlstra
@ 2022-08-24 7:29 ` shangxiaojing
0 siblings, 0 replies; 3+ messages in thread
From: shangxiaojing @ 2022-08-24 7:29 UTC (permalink / raw)
To: Peter Zijlstra
Cc: mingo, juri.lelli, vincent.guittot, dietmar.eggemann, rostedt,
bsegall, mgorman, bristot, vschneid, linux-kernel
On 2022/8/24 14:38, Peter Zijlstra wrote:
> On Wed, Aug 24, 2022 at 02:53:26PM +0800, Shang XiaoJing wrote:
>
> In general I like, however:
>
>> diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c
>> index d04073a93eb4..027068779126 100644
>> --- a/kernel/sched/stop_task.c
>> +++ b/kernel/sched/stop_task.c
>> @@ -80,11 +80,7 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev)
>> schedstat_set(curr->stats.exec_max,
>> max(curr->stats.exec_max, delta_exec));
>>
>> - curr->se.sum_exec_runtime += delta_exec;
>> - account_group_exec_runtime(curr, delta_exec);
>> -
>> - curr->se.exec_start = rq_clock_task(rq);
>> - cgroup_account_cputime(curr, delta_exec);
>> + update_current_exec_runtime(curr, rq_clock_task(rq), delta_exec);
>> }
> This already has a rq_clock_task() invocation; please fix it to call it
> once -- pre-existing issue, but if we're cleaning up we should clean up,
> right :-)
Right, the redundant invocation of rq_clock_task() will be removed in v2.
Thanks :-) ,
Shang XiaoJing
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-08-24 7:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-24 6:53 [PATCH -next] sched: Add update_current_exec_runtime helper Shang XiaoJing
2022-08-24 6:38 ` Peter Zijlstra
2022-08-24 7:29 ` shangxiaojing
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.