Commit Graph

1833 Commits

Author SHA1 Message Date
Daniel Hodges
07be9dcf59 scx_layered: Add stats for adjusted layer weights
Add stats for infeasible weights adjusted layer stats.

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-10-04 09:56:37 -07:00
Daniel Hodges
da38d69009 scx_layered: Add layer weights
Add weights to layers and use the infeasible weights crate to properly
apply weights during contention to prevent starvation.

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-10-04 09:56:37 -07:00
Daniel Hodges
0eb0a5c4fa
Merge pull request #737 from minosfuture/main
scx_layered: Refactor topology algorithms to a separate module
2024-10-04 16:50:39 +00:00
Ming Yang
d76036b7cb scx_layered: Add Reverse layer growth algo
Add `LayerGrowthAlgo::Reverse` to be the reverse order of Linear.

Signed-off-by: Ming Yang <minos.future@gmail.com>
2024-10-04 09:29:36 -07:00
Ming Yang
35d5c082d5 scx_layered: Break up layer_core_order function
`layer_core_order` provided multiple core growth implementation

Break it up into smaller function. Also, attach the method to
LayerGrowthAlgo. And `LayerCoreOrderGenerator` is added to make future
growth algo extension easy.

Signed-off-by: Ming Yang <minos.future@gmail.com>
2024-10-04 09:18:01 -07:00
Ming Yang
29308d4705 scx_layered: Move layer core growth logic to separate module
Move layer core growth logic to separate module for further refactoring.

Signed-off-by: Ming Yang <minos.future@gmail.com>
2024-10-04 08:51:11 -07:00
Daniel Hodges
8f0485b9b9
Merge pull request #732 from minosfuture/main
scx_layered: Add per layer time slices to stats
2024-10-04 12:06:30 +00:00
Ming Yang
658a75df73 scx_layered: Add per layer time slices to stats
Quoting issue #720 description from @hodgesds:

> In `scx_layered` the time slice can be [configured per layer](https://github.com/sched-ext/scx/blob/main/scheds/rust/scx_layered/src/main.rs#L493).
> This should be added to the
> [`LayerStats`](https://github.com/sched-ext/scx/blob/main/scheds/rust/scx_layered/src/stats.rs#L51)
> for each layer. During stats
> [refresh](https://github.com/sched-ext/scx/blob/main/scheds/rust/scx_layered/src/main.rs#L852)
> read the time slice duration (from the bpf skel) to the layer and add it
> to the stats. Finally, update the
> [format](https://github.com/sched-ext/scx/blob/main/scheds/rust/scx_layered/src/stats.rs#L218)
> method for `LayerStats` to print the per layer time slices.

Signed-off-by: Ming Yang <minos.future@gmail.com>
2024-10-03 20:56:03 -07:00
Tejun Heo
db0f83ce89
Merge pull request #731 from frelon/scx-rusty-single-dom-bug
scx_rusty: fix single dom short-circuit
2024-10-03 18:55:16 +00:00
Fredrik Lönnegren
4b290a1757 scx_rusty: fix single dom short-circuit
Remove a short-circuit in cpu_to_dom_id that will return domain id 0 for
any input.

This fixes a crash of scx_rusty when running with a single domain and
any CPU is offline.

Signed-off-by: Fredrik Lönnegren <fredrik@frelon.se>
2024-10-03 20:34:18 +02:00
likewhatevs
58fc3be5fc
Merge pull request #726 from likewhatevs/main
Run integration tests against bpf-next kernel every 6 hrs.
2024-10-03 12:25:18 +00:00
Pat Somaru
9d463a85e3
have bpf builds use separate cache
have bpf kernel builds use separate cache
(to avoid cache mixups when cherry pick)
2024-10-03 08:20:53 -04:00
likewhatevs
0d80ccf86b
Merge pull request #727 from likewhatevs/readme-update-2
add link to generated docs in developer guide
2024-10-03 12:16:57 +00:00
Pat Somaru
db70b4f011
add link to generated docs in developer guide 2024-10-02 22:29:20 -04:00
Pat Somaru
a715d20d92
update urls to point to bpf-next 2024-10-02 22:20:56 -04:00
Pat Somaru
5182682baf
remove lint step from bpf workflow 2024-10-02 21:27:45 -04:00
Pat Somaru
7e95e58e20
enable periodic build/test against bpf-next
add a ci job to build and test against bpf-next
every 6 hours.
2024-10-02 21:20:14 -04:00
Changwoo Min
b1070449b2
Merge pull request #714 from multics69/lavd-hotplug
scx_lavd: support CPU hotplug correctly
2024-10-03 07:35:25 +09:00
Tejun Heo
a835664e4e
Merge pull request #724 from sched-ext/htejun/release
version: Cargo.lock update
2024-10-02 21:19:00 +00:00
Tejun Heo
78682438a5 version: Cargo.lock update 2024-10-02 11:18:07 -10:00
Tejun Heo
0b4c8bcf4b
Merge pull request #722 from sched-ext/htejun/release
v1.0.5
2024-10-02 18:58:14 +00:00
Tejun Heo
7402895f4a version: v1.0.5 2024-10-02 08:34:57 -10:00
Tejun Heo
60c9ae7e7d version-tool.py: Ignore root Cargo.toml
No need to process it and it confuses the script.
2024-10-02 08:32:22 -10:00
Daniel Hodges
054352f172
Merge pull request #716 from vax-r/lavd_typo
scx_lavd: Fix typo
2024-10-02 13:21:15 +00:00
likewhatevs
cc26b988be
Merge pull request #717 from vax-r/rusty_cleanup
scx_rusty: Delete unused function variable
2024-10-02 09:01:25 -04:00
likewhatevs
6fc90340f8
Merge pull request #718 from parttimenerd/patch-1
Mention wiki in the README
2024-10-02 08:59:04 -04:00
Johannes Bechberger
1ab402b4c7
Update README.md 2024-10-02 12:41:50 +02:00
I Hsin Cheng
3055716382 scx_rusty: Delete unused function variable
"struct task_struct *p" isn't used within the function
"task_load_adj()". Delete the function parameter for cleaner code.

Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
2024-10-02 17:49:13 +08:00
I Hsin Cheng
7fbef2aa0b scx_lavd: Fix typo
Fix "alreay" to "already".

Signed-off-by: I Hsin Cheng <richard120310@gmail.com>
2024-10-02 17:39:10 +08:00
Changwoo Min
770a59f69d scx_lavd: support CPU hotplug correctly
Use scx_utils::NR_CPU_IDS to iterate whole CPUs and separately count the
number of online CPUs to support CPU hotplug correctly.

Signed-off-by: Changwoo Min <changwoo@igalia.com>
2024-10-02 14:19:18 +09:00
Changwoo Min
fb7bc0a850 scx_lavd: fix incorrect preemtability test
Signed-off-by: Changwoo Min <changwoo@igalia.com>
2024-10-02 13:24:43 +09:00
Daniel Hodges
073984fafb
Merge pull request #712 from minosfuture/main
Add #stat_doc attribute macro to Stats structs
2024-10-01 12:28:51 +00:00
Ming Yang
445743487a Add #stat_doc attribute macro to Stats struct
`#stat_doc` extends the document from stat desc property.

Add this attribute macro to the remaining Stats structs.

Signed-off-by: Ming Yang <minos.future@gmail.com>
2024-09-30 22:12:11 -07:00
Daniel Hodges
14ab9dcfd6
Merge pull request #711 from hodgesds/layered-type-cleanup
scx_layered: Fix compiler warnings
2024-10-01 02:13:24 +00:00
Daniel Hodges
c897511c62
scx_layered: Fix compiler warnings
Cleanup various compiler warnings.

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-09-30 20:59:24 -04:00
Tejun Heo
0dda8de2b0
Merge pull request #707 from CachyOS/scx-loader-dbus-introspection
scx_loader: Add D-Bus Introspection XML
2024-09-30 19:27:15 +00:00
Tejun Heo
04648bc511
Merge pull request #703 from minosfuture/main
scx_stats: Implement macro #stat_doc to autogen doc from stat desc
2024-09-30 17:58:56 +00:00
Andrea Righi
bd861507f7
Merge pull request #709 from sched-ext/bpfland-small-fixes
scx_bpfland small fixes and improvements
2024-09-30 17:40:15 +00:00
Andrea Righi
e966455af2 scx_bpfland: fix task_avg_nvcsw() return type
task_avg_nvcsw() was incorrectly returning a bool instead of u64,
limiting the impact of the lowlatency boost.

Fix it by returning the proper type (u64).

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-30 14:36:32 +02:00
Andrea Righi
6e24fcc7f0 scx_bpfland: keep tasks running on full-idle SMT cores
When a task is the last one running on a CPU and still wants to
continue, allow it to run and replenish its time only if the used CPU is
part a fully idle SMT core.

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-30 14:36:32 +02:00
Andrea Righi
c20a19c946 scx_bpfland: always give tasks a chance to run on an idle CPU
During ttwu, the kernel may decide to skip ->select_task_rq() (e.g.,
when only one CPU is allowed or migration is disabled). This causes to
call ops.enqueue() directly without having a chance to call
ops.select_cpu().

Therefore, introduce a new flag (select_cpu_done) in the local task
context to determine if ops.select_cpu() was bypassed and, in that case,
attempt to find an idle CPU directly from ops.enqueue().

In the future this information will be supplied by the kernel through a
special enqueue flag (SCX_ENQ_CPU_SELECTED) [1]. However, the custom
flag in the local task context ensures to reliably determine the same
information, even on older kernels where this flag is not available.

[1] https://lore.kernel.org/lkml/20240928003840.GA2717@maniforge/T

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-30 14:36:19 +02:00
Andrea Righi
55913e7f2f
Merge pull request #706 from sched-ext/rustland-core-drop-setaffinity-workaround
Revert "scx_rustland_core: prevent deadlock with per-CPU DSQs and CPU…
2024-09-30 12:22:25 +00:00
Daniel Hodges
940746a6f4
Merge pull request #708 from hodgesds/layered-cleanup
scx_layered: Fix cache initialization
2024-09-30 09:20:47 +00:00
Daniel Hodges
bb560088de
scx_layered: Fix cache initialization cpumask
Fix a bug in cache initialization where the first node would repeated
get all CPUs added to the mask. Refactor some consts to be more clear.

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-09-29 22:10:08 -04:00
Vladislav Nepogodin
6df06c5569
scx_loader: Add D-Bus Introspection XML
XML can be used for code generation like `gdbus-codegen`,`zbus-xmlgen`

refs:
- https://dbus2.github.io/zbus/client.html
- https://docs.gtk.org/gio/migrating-gdbus.html#generating-code-and-docs
- https://dbus.freedesktop.org/doc/dbus-api-design.html
- https://dbus.freedesktop.org/doc/dbus-specification.html
2024-09-30 03:28:30 +04:00
Andrea Righi
302dadd1ae Revert "scx_rustland_core: prevent deadlock with per-CPU DSQs and CPU affinity"
It seems that with the latest kernel the per-CPU DSQ stall while
executing sched_setaffinity() doesn't happen anymore.

Therefore, get rid of the temporary workaround introduced by commit
86db45f ("scx_rustland_core: prevent deadlock with per-CPU DSQs and CPU
affinity") and restore the old behavior, which offers more fair
scheduling policy.

Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-09-29 14:42:41 +02:00
Changwoo Min
896ff0e687
Merge pull request #704 from multics69/lavd-ci-fix
scx_lavd: fix two potential bugs
2024-09-29 09:18:41 +09:00
Changwoo Min
ade6931bfc scx_lavd: fix incorrect neighbor_bit initialization
Signed-off-by: Changwoo Min <changwoo@igalia.com>
2024-09-29 02:27:40 +09:00
Changwoo Min
6d116208c8 scx_lavd: do not perform the victim selection for an invalid cpu
When finding a victim candidate for preemption, a randomly chosen
candidate could be out of valid CPU range due to CPU offline, etc. In
this case, try another CPU randomly.

Signed-off-by: Changwoo Min <changwoo@igalia.com>
2024-09-29 02:22:18 +09:00
Ming Yang
28bfd2986a scx_stats: Implement #stat_doc to autogen doc from stat desc
The doc of scx_layered `Opt` is out of sync.

Implement attribute macro #stat_doc to generate doc from the `desc`
property.

Apply #stat_doc to `LayerStats` and `SysStats in scx_layered.

Signed-off-by : Ming Yang <minos.future@gmail.com>
2024-09-28 09:32:48 -07:00