2022-01-13 13:40:33

by Honglei Wang

[permalink] [raw]
Subject: [PATCH] sched/numa: initialize numa statistics when forking new task

The child processes will inherit numa_pages_migrated and
total_numa_faults from the parent. It means even if there is no numa
fault happen on the child, the statistics in /proc/$pid of the child
process might show huge amount. This is a bit weird. Let's initialize
them when do fork.

Signed-off-by: Honglei Wang <[email protected]>
---
kernel/sched/fair.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 6e476f6d9435..1aa0ec123a4b 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2826,6 +2826,8 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
/* Protect against double add, see task_tick_numa and task_numa_work */
p->numa_work.next = &p->numa_work;
p->numa_faults = NULL;
+ p->numa_pages_migrated = 0;
+ p->total_numa_faults = 0;
RCU_INIT_POINTER(p->numa_group, NULL);
p->last_task_numa_placement = 0;
p->last_sum_exec_runtime = 0;
--
2.14.1



2022-01-18 02:38:21

by Honglei Wang

[permalink] [raw]
Subject: Re: [PATCH] sched/numa: initialize numa statistics when forking new task

Hello, friendly ping... any comments about this?

At 2022-01-13 21:39:20, "Honglei Wang" <[email protected]> wrote:
> The child processes will inherit numa_pages_migrated and
> total_numa_faults from the parent. It means even if there is no numa
> fault happen on the child, the statistics in /proc/$pid of the child
> process might show huge amount. This is a bit weird. Let's initialize
> them when do fork.
>
> Signed-off-by: Honglei Wang <[email protected]>
> ---
> kernel/sched/fair.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index 6e476f6d9435..1aa0ec123a4b 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -2826,6 +2826,8 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
> /* Protect against double add, see task_tick_numa and task_numa_work */
> p->numa_work.next = &p->numa_work;
> p->numa_faults = NULL;
> + p->numa_pages_migrated = 0;
> + p->total_numa_faults = 0;
> RCU_INIT_POINTER(p->numa_group, NULL);
> p->last_task_numa_placement = 0;
> p->last_sum_exec_runtime = 0;
> --
> 2.14.1

2022-01-18 02:54:34

by Honglei Wang

[permalink] [raw]
Subject: Re:[PATCH] sched/numa: initialize numa statistics when forking new task

Hello, friendly ping... any comments about this?

At 2022-01-13 21:39:20, "Honglei Wang" <[email protected]> wrote:
>The child processes will inherit numa_pages_migrated and
>total_numa_faults from the parent. It means even if there is no numa
>fault happen on the child, the statistics in /proc/$pid of the child
>process might show huge amount. This is a bit weird. Let's initialize
>them when do fork.
>
>Signed-off-by: Honglei Wang <[email protected]>
>---
> kernel/sched/fair.c | 2 ++
> 1 file changed, 2 insertions(+)
>
>diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
>index 6e476f6d9435..1aa0ec123a4b 100644
>--- a/kernel/sched/fair.c
>+++ b/kernel/sched/fair.c
>@@ -2826,6 +2826,8 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
> /* Protect against double add, see task_tick_numa and task_numa_work */
> p->numa_work.next = &p->numa_work;
> p->numa_faults = NULL;
>+ p->numa_pages_migrated = 0;
>+ p->total_numa_faults = 0;
> RCU_INIT_POINTER(p->numa_group, NULL);
> p->last_task_numa_placement = 0;
> p->last_sum_exec_runtime = 0;
>--
>2.14.1

2022-01-20 06:44:02

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] sched/numa: initialize numa statistics when forking new task

On Thu, Jan 13, 2022 at 09:39:20PM +0800, Honglei Wang wrote:
> The child processes will inherit numa_pages_migrated and
> total_numa_faults from the parent. It means even if there is no numa
> fault happen on the child, the statistics in /proc/$pid of the child
> process might show huge amount. This is a bit weird. Let's initialize
> them when do fork.
>
> Signed-off-by: Honglei Wang <[email protected]>

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs

2022-01-30 10:30:51

by tip-bot2 for Jacob Pan

[permalink] [raw]
Subject: [tip: sched/core] sched/numa: initialize numa statistics when forking new task

The following commit has been merged into the sched/core branch of tip:

Commit-ID: 12bf8a7eb84e4d3547ebfd89bb0a9255a0f2acc7
Gitweb: https://git.kernel.org/tip/12bf8a7eb84e4d3547ebfd89bb0a9255a0f2acc7
Author: Honglei Wang <[email protected]>
AuthorDate: Thu, 13 Jan 2022 21:39:20 +08:00
Committer: Peter Zijlstra <[email protected]>
CommitterDate: Thu, 27 Jan 2022 12:57:18 +01:00

sched/numa: initialize numa statistics when forking new task

The child processes will inherit numa_pages_migrated and
total_numa_faults from the parent. It means even if there is no numa
fault happen on the child, the statistics in /proc/$pid of the child
process might show huge amount. This is a bit weird. Let's initialize
them when do fork.

Signed-off-by: Honglei Wang <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Mel Gorman <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
kernel/sched/fair.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 095b0aa..5dca13f 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2825,6 +2825,8 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
/* Protect against double add, see task_tick_numa and task_numa_work */
p->numa_work.next = &p->numa_work;
p->numa_faults = NULL;
+ p->numa_pages_migrated = 0;
+ p->total_numa_faults = 0;
RCU_INIT_POINTER(p->numa_group, NULL);
p->last_task_numa_placement = 0;
p->last_sum_exec_runtime = 0;