Tejun Heo
44a0f1b124
scx_utils: Factor out monitor_stats() from scx_rusty and scx_layered
2024-08-23 06:46:19 -10:00
Tejun Heo
ae3024e938
scx_layered: Add --stats and make --monitor behavior consistent with scx_rusty
2024-08-23 05:52:52 -10:00
Tejun Heo
0f04a93dd1
scx_rusty: Add stat descriptions and make minor adjustments
2024-08-23 05:46:13 -10:00
Tejun Heo
36865234f8
scx_rusty: Add scx_stats annotations necessary for openmetrics translation
2024-08-23 04:59:08 -10:00
Tejun Heo
70ba4cb9ef
scx_stats: Fix multiple labels handling in scxstats_to_openmetrics.py
...
OM labels() was called with an array which is then incorrectly interpreted
as a single label. Unpack it to list of arguments. While at it, make error
reporting a bit more robust.
2024-08-23 04:56:30 -10:00
Tejun Heo
2f3f473cd3
scx_rusty: Improve timestamp reporting
2024-08-23 04:31:27 -10:00
Tejun Heo
76934f3aab
scx_rusty: Convert to scx_stats
...
This allows scx_rusty to avoid generating excessive logs for statistics
while still allowing detailed monitoring on demand.
2024-08-22 19:44:12 -10:00
Tejun Heo
4678476ca7
scx_stats_derive: Each _AssScxStastMeta assertion should have an unique ID
2024-08-22 13:53:27 -10:00
Tejun Heo
16c07a5cd9
scx_rusty: Don't reset bpf_stats, remember prev states and calculate delta
...
This will ease transition to scx_stats.
2024-08-22 13:02:23 -10:00
Tejun Heo
13fa48a871
scx_rusty: Separate out stats generation and formatting
...
to prepare for scx_stats conversion.
2024-08-22 10:03:10 -10:00
Tejun Heo
b4564520e5
scx_rusty: Simplify Stats structs and take id out of the structs
...
to prepare for scx_stats conversion. While at it, make some cosmetic
changes.
2024-08-22 08:45:33 -10:00
Tejun Heo
4834dec684
scx_rusty: Move stats structs to stats.rs and rename for consistency
2024-08-21 22:04:38 -10:00
Tejun Heo
5cf4212330
Revert "rusty: Integrate stats with the metrics framework"
...
This reverts commit 83373b1f4e
in prepration
for converting to scx_stats.
2024-08-20 21:59:25 -10:00
Tejun Heo
516a7590db
scx_rusty: Revert log_recorder conversion
...
scx_rusty will be converted to scx_stats in a similar fashin with
scx_layered. Undo log_recorder conversion in preparation.
2024-08-20 21:59:20 -10:00
Tejun Heo
1da249f063
scx_utils::topology: Always use NR_CPU_IDS and NR_CPUS_POSSIBLE
...
Always use the LazyLock versions and drop the counterparts from Topology.
2024-08-20 21:57:56 -10:00
Tejun Heo
1ae4655b3c
scx_utils::cpumask: Default to displaying in hex
...
There isn't much to gain by displaying cpumasks in binary. Drop separate
Display implementation just default to 'x' formatting.
2024-08-20 21:50:23 -10:00
Tejun Heo
3ca2f0b6f9
scx_utils/cpumask: Use nr_cpu_ids instead of num_possible_cpus
...
- Add static NR_CPU_IDS and NR_CPUS_POSSIBLE to topology.
- Fix comment for Topology::nr_cpu_ids(). Was missing a negation.
- cpumaks should be sized by nr_cpus_ids, not num_possible_cpus and the
number can't change while the system is running. Drop cpumask.nr_cpus and
use *NR_CPU_IDS everywhere.
2024-08-20 21:25:40 -10:00
Tejun Heo
0cc59a5243
scx_utils: cargo fmt
2024-08-20 21:25:40 -10:00
Tejun Heo
91213de713
Merge branch 'main' into htejun/rusty
2024-08-20 21:13:12 -10:00
Tejun Heo
2d449f3288
Merge pull request #523 from Kawanaao/openrc-logrotate
...
openrc: Add logrotate support for openrc systems
2024-08-20 21:10:51 -10:00
Tejun Heo
f7c193e528
scx_utils, scx_rusty: Minor updates to version handling
...
- Update scx_utils/build.rs so that 12 char SHA1 is generated instead of
full one.
- Add --version to scx_rusty. Use custom one as we don't want to use the
default cargo version one.
2024-08-20 21:03:05 -10:00
Tejun Heo
8f786be08f
scx_rusty: cargo fmt
2024-08-20 21:03:05 -10:00
Tejun Heo
4440567949
scx_rusty: Update Cargo.lock
2024-08-20 21:03:05 -10:00
Andrea Righi
014dc7b3c3
Merge pull request #522 from sched-ext/bpfland-cpumask
...
scx_bpfland: use scx_utils::Cpumask
2024-08-21 08:37:43 +02:00
Andrea Righi
a9f5aaa536
scx_bpfland: replace custom CpuMask with scx_utils::Cpumask
...
Rely on scx_utils::Cpumask instead of re-implementing a custom struct to
parse and manage CPU masks.
Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-08-21 07:21:52 +02:00
Andrea Righi
235f19fdf1
cpumask: implement hex string formatter
...
Allow to format a Cpumask as an hex string, implementing the proper
formatter LowerHex / UpperHex traits.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-08-21 07:21:22 +02:00
Kawanaao
f35717e970
Create scx.logrotate
2024-08-20 18:02:15 +03:00
Kawanaao
3485adb47f
Add support for openrc logrotate
2024-08-20 17:47:16 +03:00
Andrea Righi
33b6ada98e
Merge pull request #509 from sched-ext/bpfland-topology
...
scx_bpfland: topology awareness
2024-08-20 14:37:23 +02:00
Daniel Hodges
9f2d548b8f
Merge pull request #520 from hodgesds/merge-fixes
...
ci: Fix cache directory
2024-08-20 07:33:22 -04:00
Andrea Righi
467d4b5ea4
scx_bpfland: get topology information from scx_utils::Topology
...
Rely on scx_utils::Topology to get CPU and cache information, instead of
re-implementing custom methods.
Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-08-20 10:16:02 +02:00
Andrea Righi
0b2dc6b9fc
scx_utils: Add L2 / L3 cache id to CPU
...
Add the L2 / L3 cache id to the Cpu struct, to quickly determine the
cache nodes associated to each CPU.
Signed-off-by: Andrea Righi <andrea.righi@linux.dev>
2024-08-20 10:16:02 +02:00
Daniel Hodges
e121dd3dd5
ci: Fix cache directory
...
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-08-19 20:07:50 -07:00
Daniel Hodges
03944694a9
Merge pull request #519 from hodgesds/veristat-merge-fix
...
ci: fix merge veristat cache generation
2024-08-19 21:58:00 -04:00
Daniel Hodges
40bb003555
ci: fix merge veristat cache generation
...
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-08-19 18:30:32 -07:00
Daniel Hodges
d7cc4f30f0
Merge pull request #515 from hodgesds/veristat-fix
...
ci: fix veristat for PRs
2024-08-19 20:05:13 -04:00
Changwoo Min
41bc6f0967
Merge pull request #511 from multics69/lavd-perf-profile
...
scx_lavd: add power profile options: --performance, --balanced, --powersave
2024-08-20 09:02:37 +09:00
Changwoo Min
1d61dd4c1d
Merge pull request #508 from multics69/lavd-numa-fix
...
scx_lavd: fix a potential watchdog timeout error at multi-NUMA/CCX platforms
2024-08-20 09:02:23 +09:00
Changwoo Min
2c4c2a0ccf
Merge pull request #507 from multics69/lavd-pretty-rust
...
scx_lavd: revise FlatTopology prettier
2024-08-20 09:01:26 +09:00
Daniel Hodges
05a2721f8e
Merge pull request #510 from hodgesds/layered-core-topo-selection
...
scx_layered: Use topology for core selection
2024-08-19 20:01:16 -04:00
Tejun Heo
695a33cdcc
Merge pull request #517 from sched-ext/htejun/fix
...
scx_layered: Fix verification failure
2024-08-19 13:44:38 -10:00
Daniel Hodges
1ff5e4fbed
ci: fix veristat for PRs
...
Make sure veristat is available for CI for PRs.
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-08-19 16:42:31 -07:00
Tejun Heo
d01b49bd0e
scx_layered: Fix verification failure
...
4fccc06905
("scx_layered: Fix uninitialized variable") causes the
following verification failure. Fix it by moving assignments below range
checking.
Validating match_layer() func#1...
283: R1=scalar() R2=scalar() R3=mem_or_null(id=49,sz=1) R10=fp0
; int match_layer(u32 layer_id, pid_t pid, const char *cgrp_path) @ main.bpf.c:1029
283: (7b) *(u64 *)(r10 -24) = r3 ; R3=mem_or_null(id=49,sz=1) R10=fp0 fp-24_w=mem_or_null(id=49,sz=1)
284: (bc) w7 = w1 ; R1=scalar() R7_w=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff))
; struct layer *layer = &layers[layer_id]; @ main.bpf.c:1033
285: (bc) w1 = w7 ; R1_w=scalar(id=50,smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) R7_w=scalar(id=50,smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff))
286: (27) r1 *= 1061192 ; R1_w=scalar(smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8))
287: (18) r8 = 0xffffc90002a26000 ; R8_w=map_value(map=bpf_bpf.bss,ks=4,vs=16979080)
289: (0f) r8 += r1 ; R1_w=scalar(smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8)) R8_w=map_value(map=bpf_bpf.bss,ks=4,vs=16979080,smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8))
; u32 nr_match_ors = layer->nr_match_ors; @ main.bpf.c:1034
290: (bf) r1 = r8 ; R1_w=map_value(map=bpf_bpf.bss,ks=4,vs=16979080,smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8)) R8_w=map_value(map=bpf_bpf.bss,ks=4,vs=16979080,smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8))
291: (07) r1 += 1060992 ; R1_w=map_value(map=bpf_bpf.bss,ks=4,vs=16979080,off=0x103080,smin=0,smax=umax=0x103147ffefceb8,smax32=0x7ffffff8,umax32=0xfffffff8,var_off=(0x0; 0x1ffffffffffff8))
292: (61) r1 = *(u32 *)(r1 +0)
R1 unbounded memory access, make sure to bounds check any such access
processed 1099 insns (limit 1000000) max_states_per_insn 2 total_states 72 peak_states 72 mark_read 9
-- END PROG LOAD LOG --
2024-08-19 13:18:20 -10:00
Tejun Heo
c0b4deb9ec
Merge pull request #516 from sched-ext/htejun/scx_stats
...
scx_stats/scripts/scxstats_to_openmetrics: Retry connection
2024-08-19 13:02:22 -10:00
Tejun Heo
4e859d067e
scx_stats/scripts/scxstats_to_openmetrics: Retry connection
...
It now retries until told to exit. This is a bit easier to use and matches
`scx_layered --monitor`.
2024-08-19 12:52:57 -10:00
Daniel Hodges
b3793e0069
scx_layered: Use topology for core selection
...
Currently the core selection logic in scx_layered uses the first
available core in the bitmask. This is suboptimal when the scheduler is
configured with specific NUMA/LLC restrictions. The ideal core selection
logic should try to find the least used cores within the preferred
scheduling domain and allocate new cpus from shared cores within that
domain.
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>
2024-08-19 15:51:35 -07:00
Tejun Heo
3498a2b899
Merge pull request #514 from sched-ext/htejun/scx_stats
...
scx_stats, scx_layered: Implement independent stats client sessions
2024-08-19 11:24:53 -10:00
Tejun Heo
4198807841
Merge pull request #506 from vax-r/uninit_var
...
scx_layered: Fix uninitialized variable
2024-08-19 11:13:23 -10:00
Tejun Heo
f6bc52d31e
scx_layered: Make --monitor behavior more useful
...
- If --monitor is specified with layer specs, the scheduler also starts
stats monitoring on a thread.
- Standalone monitoring mode no longer exits when the scheduler isn't there.
2024-08-19 10:55:02 -10:00
Tejun Heo
cb9a2f5c32
Merge pull request #512 from hodgesds/doc-improvements
...
docs: Update developer guide
2024-08-19 09:33:38 -10:00