lkml.org 
[lkml]   [2022]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v1] sched: there is no need to call switch_mm_irqs_off when sched between two user thread.
From
Date

On 2022/5/31 下午10:46, Peter Zijlstra wrote:
> 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).
ok, thanks! And I will do it in architecture code.

\
 
 \ /
  Last update: 2022-06-01 08:46    [W:0.048 / U:1.180 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site