lkml.org 
[lkml]   [2022]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v1] sched: there is no need to call switch_mm_irqs_off when sched between two user thread.
On Tue, May 31, 2022 at 07:56:41PM +0800, Ming Wang wrote:
> When condition (prev->active_mm == next->mm && !prev->mm) is met,
> the situation is as follows:
>
> user thread -> user thread
>
> There is not need switch_mm when sched between two user thread.
> Because they share the mm_struct. This can provide better
> performance when testing UnixBench.
>
> Signed-off-by: Ming Wang <wangming01@loongson.cn>
> ---
> kernel/sched/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 696c649..9d7f6fb 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -5099,7 +5099,8 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev)
> * case 'prev->active_mm == next->mm' through
> * finish_task_switch()'s mmdrop().
> */
> - switch_mm_irqs_off(prev->active_mm, next->mm, next);
> + if ((prev->active_mm != next->mm) || (!prev->mm))
> + switch_mm_irqs_off(prev->active_mm, next->mm, next);

I think this needs to be inside switch_mm(). Architectures are free to
play silly games with what the current active mm is (and iirc x86
actually does this).

\
 
 \ /
  Last update: 2022-05-31 16:48    [W:0.063 / U:0.648 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site