Commit Graph

82 Commits

Author SHA1 Message Date
Jordan Rome
38dab12459 Always build libbpf as a PIE
This is to fix an error sometimes seen when compiling with gcc,
whereby the position independent sched ext rust libraries
don't play nicely with the libbpf library if it's not also built
as position independent.

This also explicitly sets the rustc relocation-mode to "pic",
which is the default (just so this doesn't accidentally change
out from under us).
2024-03-05 12:56:09 -08:00
Jordan Rome
499924ead8 Add libbpf as a submodule
This is to potentinally reduce issues with folks
using different versions of libbpf at runtime.

This also:
- makes static linking of libbpf the default
- adds steps in `meson setup` to fetch libbpf and make it
2024-03-01 12:39:35 -08:00
Tejun Heo
c3c71781f1 Revert "Merge pull request #165 from sched-ext/reduce-rust-build-load"
This reverts commit a7b39f24e2, reversing
changes made to cf7404fb03.

The PR doesn't do what the description says. It instead limits the number of
rustc instances to 1 for each cargo build making rust builds extremely slow.
Let's revert and try again.
2024-02-29 07:46:37 -10:00
Tejun Heo
438373a8cc Revert "Merge pull request #163 from jordalgo/libbpf-submodule"
This reverts commit 5b9b953e3c, reversing
changes made to a7b39f24e2.

The current git submodule approach is a bit cumbersome and doesn't provide a
unified build environment for both libbpf and scx scheds. Also, the build
instruction doesn't seem to work. Let's revert it for now.
2024-02-29 07:39:01 -10:00
David Vernet
5b9b953e3c
Merge pull request #163 from jordalgo/libbpf-submodule
Add libbpf as a submodule
2024-02-29 09:31:40 -06:00
Jordan Rome
626e66686a Add libbpf as a submodule
This is to potentinally reduce issues with folks using
different versions of libbpf at runtime.
2024-02-29 07:31:13 -08:00
Andrea Righi
274eb8b4d8 build: limit the maximum amount of parallel cargo build
Each cargo build is already parallelized, spreading multiple rustc
across all the available CPUs by default.

Allowing to run multiple instances of cargo at the same time doesn't
provide any benefit and it can only increase the risk of triggering OOM
conditions or overloading the build system.

Therefore, limit the amount of parallel cargo build instances to 1.

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
2024-02-29 15:25:32 +01:00
Jordan Rome
9cedac45ee Gate cargo build options behind 'enable_rust'
This is to not have to require cargo when building the c schedulers.
2024-02-25 17:51:43 -08:00
Piotr Gorski
cb11aecbd0
Bump to 0.1.7
Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
2024-02-13 08:20:38 +01:00
Jordan Rome
dd11d97cdb Include libbpf_h path in c sched compilation
If a user wants to use an external libbpf source (via libbpf_h opt)
we need to also pass this to c sched compilation.
2024-02-02 19:46:24 -05:00
Tejun Heo
988b7d13c1 Bump versions
scx_exit_info change doesn't require code to be updated but breaks binary
compatbility. Bump versions and cut a new release.
2024-01-25 09:01:23 -10:00
Piotr Gorski
d618a06d92
Add systemd services for scx schedulers
Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
2024-01-15 23:41:59 +01:00
Tejun Heo
942b0269b8 Bump versions
After updates to reflect the updated init and direct dispatch API, the
schedulers aren't compatible with older kernels. Bump versions and publish
releases.
2024-01-08 18:49:54 -10:00
Andrea Righi
05f5c69747 ci: use virtme-ng to test the schedulers
Use virtme-ng to run the schedulers after they're built; virtme-ng
allows to pick an arbitrary sched-ext enabled kernel and run it
virtualizing the entire user-space root filesystem, so we can basically
exceute the recompiled schedulers inside such kernel.

This should allow to catch potential run-time issue in advance (both in
the kernel and the schedulers).

The sched-ext kernel is taken from the Ubuntu ppa (ppa:arighi/sched-ext)
at the moment, since it is the easiest / fastest way to get a
precompiled sched-ext kernel to run inside the Ubuntu 22.04 testing
environment.

The schedulers are tested using the new meson target "test_sched", the
specific actions are defined in meson-scripts/test_sched.

By default each test has a timeout of 30 sec, after the virtme-ng
completes the boot (that should be enough to initialize the scheduler
and run the scheduler for some seconds), while the total lifetime of the
virtme-ng guest is set to 60 sec, after this time the guest will be
killed (this allows to catch potential kernel crashes / hangs).

If a single scheduler fails the test, the entire "test_sched" action
will be interrupted and the overall test result will be considered a
failure.

At the moment scx_layered is excluded from the tests, because it
requires a special configuration (we should probably pre-generate a
default config in the workflow actions and change the scheduler to use
the default config if it's executed without any argument).

Moreover, scx_flatcg is also temporarily excluded from the tests,
because of these known issues:
 - https://github.com/sched-ext/scx/issues/49
 - https://github.com/sched-ext/sched_ext/pull/101

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
2023-12-29 15:54:10 +01:00
Tejun Heo
98773131df Bump versions to publish scx_utils fedora compat change 2023-12-29 06:58:45 +09:00
Piotr Gorski
c6eb66616f
Bump to 0.1.3
Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
2023-12-22 00:48:50 +01:00
Tejun Heo
8a07bcc31b Bump versions and add LICENSE symlinks for scx_layered and scx_rusty 2023-12-12 11:21:08 -10:00
Andrea Righi
1742daa4b5 build: add Debian arch name mapping for s390
Add the proper mapping from Debian architecture "s390x" to the kernel
architecture name "s390".

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
2023-12-10 12:42:15 +01:00
Andrea Righi
6343bcf360 build: introduce enable_rust build option
Introduce an option to enable/disable the build of all the Rust
sub-projects.

This can be useful to build scx on those systems where Rust is not
fully supported (e.g., armhf).

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
2023-12-09 15:05:23 +01:00
Tejun Heo
9e12238d64 Support offline compilation 2023-12-08 08:45:44 -10:00
Tejun Heo
d8c2321831 Bump overall version to 0.1.1
- scx_nest included.
- scx_rusty bug fix.
- Ubuntu build fixes.
2023-12-07 13:11:28 -10:00
Tejun Heo
9f70108962 v0.1.0 2023-12-05 15:04:23 -10:00
Tejun Heo
ecd485ed3e Add LICENSE (GPL-2.0) 2023-12-03 12:04:02 -10:00
Tejun Heo
e030d0c816 build: Ensure meson version >= 1.2 2023-12-02 08:09:00 -10:00
Tejun Heo
0f1ed894bd build: rust projects now link against libbpf.a if provided 2023-12-02 06:41:26 -10:00
Tejun Heo
30f6a38573 build: Pipe down build options to scx_utils::BuildHelpers using env vars 2023-12-01 14:49:32 -10:00
Tejun Heo
6b9c392bf0 build: "meson install" works now 2023-12-01 13:37:28 -10:00
Tejun Heo
8fb4fbf54d build: Propagate buildtype==release to cargo 2023-12-01 12:15:16 -10:00
Tejun Heo
a55fc6893b build: Trigger cargo build on rust sub-projects from meson.build 2023-12-01 11:58:56 -10:00
Tejun Heo
6ec509b3b6 build, scx_utils: Misc improvements
- build: Check clang version like scx_utils does.

- scx_utils: Generate rerun-if-env-changed directives.
2023-12-01 10:20:06 -10:00
Tejun Heo
800b9f9ebb build: Warn about RESIZE_ARRAY breakage if libbpf<1.3 2023-11-27 15:02:33 -10:00
Tejun Heo
68b6d37800 scx: Initial repo setup and import of example schedulers from kernel tree 2023-11-27 14:47:04 -10:00