mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 00/24] sched: Introduce classes of tasks for load balance
@ 2023-02-07  5:10 Ricardo Neri
  2023-02-07  5:10 ` [PATCH v3 01/24] sched/task_struct: Introduce IPC classes of tasks Ricardo Neri
                   ` (24 more replies)
  0 siblings, 25 replies; 58+ messages in thread
From: Ricardo Neri @ 2023-02-07  5:10 UTC (permalink / raw)
  To: Peter Zijlstra (Intel), Juri Lelli, Vincent Guittot
  Cc: Ricardo Neri, Ravi V. Shankar, Ben Segall,
	Daniel Bristot de Oliveira, Dietmar Eggemann, Len Brown,
	Mel Gorman, Rafael J. Wysocki, Srinivas Pandruvada,
	Steven Rostedt, Tim Chen, Valentin Schneider, Lukasz Luba,
	Ionela Voinescu, x86, Joel Fernandes (Google),
	linux-kernel, linux-pm, Ricardo Neri

Hi,

This is third version of this patchset. Previous versions can be found
here [1] and here [2]. For brevity, I did not include the cover letter
from the original posting. You can read it here [1].

This patchset depends on a separate series to handle better asym_packing
between SMT cores [3].

For convenience, this patchset and [3] can be retrieved from [4] and are
based on the tip tree as on Feb 6th, 2023.

Changes since v2:

Ionela pointed out that the IPCC performance score was vague. I provided
a clearer definition and guidance on how architectures should implement
support for it.

Ionela mentioned that other architectures or scheduling schemes may want
to use IPC classes differently. I restricted its current use to
asym_packing.

Lukasz raised the issue that hardware may not be ready to support IPC
classes early after boot. I added a new interface that drivers or
enablement code can call to enable the use of IPC classes when ready.

Vincent provided multiple suggestions on how to balance non-SMT and SMT
sched groups. His feedback was incorporated in [3]. As a result, now
IPCC statistics are also used to break ties between fully_busy groups.

Dietmar indicated that real-time nor deadline tasks should influence the
CFS load balancing. I implemented such change. Also, as per his suggestion,
I folded the IPCC statistics into the existing struct sg_lb_stats.

Updated patches: 2, 6, 7, 10, 13, 14, 17
New patches: 9, 20
Unchanged patches: 1, 3, 4, 5, 8, 11, 12, 15, 16, 18, 19, 21, 22, 23, 24

Hopefully, this series is one step closer to be merged.

Thanks in advance for your kind feedback!

BR,
Ricardo

[1]. https://lore.kernel.org/lkml/20220909231205.14009-1-ricardo.neri-calderon@linux.intel.com/
[2]. https://lore.kernel.org/lkml/20221128132100.30253-1-ricardo.neri-calderon@linux.intel.com/
[3]. https://lore.kernel.org/lkml/20230207045838.11243-1-ricardo.neri-calderon@linux.intel.com/
[4]. https://github.com/ricardon/tip/tree/rneri/ipc_classes_v3

Ricardo Neri (24):
  sched/task_struct: Introduce IPC classes of tasks
  sched: Add interfaces for IPC classes
  sched/core: Initialize the IPC class of a new task
  sched/core: Add user_tick as argument to scheduler_tick()
  sched/core: Update the IPC class of the current task
  sched/fair: Collect load-balancing stats for IPC classes
  sched/fair: Compute IPC class scores for load balancing
  sched/fair: Use IPCC stats to break ties between asym_packing sched
    groups
  sched/fair: Use IPCC stats to break ties between fully_busy SMT groups
  sched/fair: Use IPCC scores to select a busiest runqueue
  thermal: intel: hfi: Introduce Intel Thread Director classes
  x86/cpufeatures: Add the Intel Thread Director feature definitions
  thermal: intel: hfi: Store per-CPU IPCC scores
  thermal: intel: hfi: Update the IPC class of the current task
  thermal: intel: hfi: Report the IPC class score of a CPU
  thermal: intel: hfi: Define a default class for unclassified tasks
  thermal: intel: hfi: Enable the Intel Thread Director
  sched/task_struct: Add helpers for IPC classification
  sched/core: Initialize helpers of task classification
  sched/fair: Introduce sched_smt_siblings_idle()
  thermal: intel: hfi: Implement model-specific checks for task
    classification
  x86/cpufeatures: Add feature bit for HRESET
  x86/hreset: Configure history reset
  x86/process: Reset hardware history in context switch

 arch/x86/include/asm/cpufeatures.h       |   2 +
 arch/x86/include/asm/disabled-features.h |   8 +-
 arch/x86/include/asm/hreset.h            |  30 +++
 arch/x86/include/asm/msr-index.h         |   6 +-
 arch/x86/include/asm/topology.h          |   8 +
 arch/x86/kernel/cpu/common.c             |  30 ++-
 arch/x86/kernel/cpu/cpuid-deps.c         |   1 +
 arch/x86/kernel/cpu/scattered.c          |   1 +
 arch/x86/kernel/process_32.c             |   3 +
 arch/x86/kernel/process_64.c             |   3 +
 drivers/thermal/intel/intel_hfi.c        | 242 +++++++++++++++++-
 include/linux/sched.h                    |  24 +-
 include/linux/sched/topology.h           |   6 +
 init/Kconfig                             |  12 +
 kernel/sched/core.c                      |  10 +-
 kernel/sched/fair.c                      | 309 ++++++++++++++++++++++-
 kernel/sched/sched.h                     |  66 +++++
 kernel/sched/topology.c                  |   9 +
 kernel/time/timer.c                      |   2 +-
 19 files changed, 751 insertions(+), 21 deletions(-)
 create mode 100644 arch/x86/include/asm/hreset.h

-- 
2.25.1


^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2023-04-17 22:58 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-07  5:10 [PATCH v3 00/24] sched: Introduce classes of tasks for load balance Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 01/24] sched/task_struct: Introduce IPC classes of tasks Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 02/24] sched: Add interfaces for IPC classes Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 03/24] sched/core: Initialize the IPC class of a new task Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 04/24] sched/core: Add user_tick as argument to scheduler_tick() Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 05/24] sched/core: Update the IPC class of the current task Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 06/24] sched/fair: Collect load-balancing stats for IPC classes Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 07/24] sched/fair: Compute IPC class scores for load balancing Ricardo Neri
2023-03-28 10:00   ` Vincent Guittot
2023-03-30  2:07     ` Ricardo Neri
2023-03-31 12:20       ` Vincent Guittot
2023-04-17 22:52         ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 08/24] sched/fair: Use IPCC stats to break ties between asym_packing sched groups Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 09/24] sched/fair: Use IPCC stats to break ties between fully_busy SMT groups Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 10/24] sched/fair: Use IPCC scores to select a busiest runqueue Ricardo Neri
2023-03-28 10:03   ` Vincent Guittot
2023-03-30  2:14     ` Ricardo Neri
2023-03-31 12:23       ` Vincent Guittot
2023-04-17 23:01         ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 11/24] thermal: intel: hfi: Introduce Intel Thread Director classes Ricardo Neri
2023-03-27 16:31   ` Rafael J. Wysocki
2023-03-28 23:42     ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 12/24] x86/cpufeatures: Add the Intel Thread Director feature definitions Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 13/24] thermal: intel: hfi: Store per-CPU IPCC scores Ricardo Neri
2023-03-27 16:37   ` Rafael J. Wysocki
2023-03-28 23:43     ` Ricardo Neri
2023-03-29 12:08       ` Rafael J. Wysocki
2023-03-30  2:15         ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 14/24] thermal: intel: hfi: Update the IPC class of the current task Ricardo Neri
2023-03-27 16:42   ` Rafael J. Wysocki
2023-03-28 23:41     ` Ricardo Neri
2023-03-29 12:13       ` Rafael J. Wysocki
2023-03-30  3:06         ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 15/24] thermal: intel: hfi: Report the IPC class score of a CPU Ricardo Neri
2023-03-27 16:50   ` Rafael J. Wysocki
2023-03-28 23:41     ` Ricardo Neri
2023-03-29 12:17       ` Rafael J. Wysocki
2023-03-31  2:07         ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 16/24] thermal: intel: hfi: Define a default class for unclassified tasks Ricardo Neri
2023-03-27 16:51   ` Rafael J. Wysocki
2023-03-28 23:49     ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 17/24] thermal: intel: hfi: Enable the Intel Thread Director Ricardo Neri
2023-03-27 16:53   ` Rafael J. Wysocki
2023-03-28 23:50     ` Ricardo Neri
2023-02-07  5:10 ` [PATCH v3 18/24] sched/task_struct: Add helpers for IPC classification Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 19/24] sched/core: Initialize helpers of task classification Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 20/24] sched/fair: Introduce sched_smt_siblings_idle() Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 21/24] thermal: intel: hfi: Implement model-specific checks for task classification Ricardo Neri
2023-03-27 17:03   ` Rafael J. Wysocki
2023-03-29  0:15     ` Ricardo Neri
2023-03-29 12:21       ` Rafael J. Wysocki
2023-03-30  2:41         ` Ricardo Neri
2023-03-31 17:08           ` Rafael J. Wysocki
2023-04-03 14:12             ` Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 22/24] x86/cpufeatures: Add feature bit for HRESET Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 23/24] x86/hreset: Configure history reset Ricardo Neri
2023-02-07  5:11 ` [PATCH v3 24/24] x86/process: Reset hardware history in context switch Ricardo Neri
2023-03-05 22:49 ` [PATCH v3 00/24] sched: Introduce classes of tasks for load balance Ricardo Neri

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®