Skip to content

Commit 4ddb066

Browse files
authored
scx.full: init; scx.rusty: init (#352077)
2 parents 5d73ec2 + e24aaf4 commit 4ddb066

File tree

11 files changed

+1783
-20
lines changed

11 files changed

+1783
-20
lines changed

pkgs/os-specific/linux/scx/default.nix

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
}:
1111
let
1212
versionInfo = lib.importJSON ./version.json;
13+
14+
# Useful function for packaging schedulers, should be used unless the build system is too complex
15+
# passes some default values like src, version (all of which can be overridden)
1316
mkScxScheduler =
1417
packageType:
1518
args@{ schedulerName, ... }:
@@ -43,7 +46,7 @@ let
4346
"zerocallusedregs"
4447
] ++ (args.hardeningDisable or [ ]);
4548

46-
meta = args.meta // {
49+
meta = (args.meta or { }) // {
4750
description = args.meta.description or "";
4851
longDescription =
4952
(args.meta.longDescription or "")
@@ -65,7 +68,9 @@ let
6568
{ layered = import ./scx_layered; }
6669
{ rlfifo = import ./scx_rlfifo; }
6770
{ rustland = import ./scx_rustland; }
71+
{ rusty = import ./scx_rusty; }
6872
{ csheds = import ./scx_csheds.nix; }
73+
{ full = import ./scx_full.nix; }
6974
];
7075
in
7176
(lib.mapAttrs (name: scheduler: callPackage scheduler { inherit mkScxScheduler; }) schedulers)

pkgs/os-specific/linux/scx/scx_bpfland/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
mkScxScheduler,
55
}:
66

7-
mkScxScheduler "rust" rec {
7+
mkScxScheduler "rust" {
88
schedulerName = "scx_bpfland";
99

1010
cargoRoot = "scheds/rust/scx_bpfland";

pkgs/os-specific/linux/scx/scx_csheds.nix

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ let
5353
});
5454

5555
in
56-
mkScxScheduler "c" rec {
56+
mkScxScheduler "c" {
5757
schedulerName = "scx_csheds";
5858

5959
postPatch = ''
@@ -78,16 +78,19 @@ mkScxScheduler "c" rec {
7878

7979
mesonFlags = [
8080
(lib.mapAttrsToList lib.mesonEnable {
81+
# systemd unit is implemented in the nixos module
82+
# upstream systemd files are a hassle to patch
8183
"systemd" = false;
8284
"openrc" = false;
85+
# libbpf is already fetched as FOD
8386
"libbpf_a" = false;
8487
# not for nix
8588
"libalpm" = false;
8689
})
8790
(lib.mapAttrsToList lib.mesonBool {
8891
# needed libs are already fetched as FOD
8992
"offline" = true;
90-
# rust schedulers are built seperately
93+
# rust based schedulers are built seperately
9194
"enable_rust" = false;
9295
})
9396
];
@@ -99,8 +102,8 @@ mkScxScheduler "c" rec {
99102
meta = {
100103
description = "Sched-ext C userspace schedulers";
101104
longDescription = ''
102-
This includes C based schedulers such as scx_central,
103-
scx_flatcg, scx_pair, scx_qmap, scx_simple, scx_userland.
105+
This includes C based schedulers such as scx_central, scx_flatcg,
106+
scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland.
104107
'';
105108
};
106109
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
stdenv,
3+
lib,
4+
scx,
5+
mkScxScheduler,
6+
}:
7+
scx.csheds.overrideAttrs (oldAttrs: {
8+
pname = "scx_full";
9+
postInstall =
10+
(oldAttrs.postInstall or "")
11+
+ ''
12+
cp ${lib.getExe scx.bpfland} $out/bin/
13+
cp ${lib.getExe scx.lavd} $out/bin/
14+
cp ${lib.getExe scx.layered} $out/bin/
15+
cp ${lib.getExe scx.rlfifo} $out/bin/
16+
cp ${lib.getExe scx.rustland} $out/bin/
17+
cp ${lib.getExe scx.rusty} $out/bin/
18+
'';
19+
20+
meta = oldAttrs.meta // {
21+
description = "Sched-ext C and Rust userspace schedulers";
22+
longDescription = ''
23+
This includes C based schedulers such as scx_central, scx_flatcg,
24+
scx_pair, scx_qmap, scx_simple, scx_userland and Rust based schedulers
25+
like scx_rustland, scx_bpfland, scx_lavd, scx_layered, scx_rlfifo.
26+
'';
27+
};
28+
})

pkgs/os-specific/linux/scx/scx_lavd/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
mkScxScheduler,
55
}:
66

7-
mkScxScheduler "rust" rec {
7+
mkScxScheduler "rust" {
88
schedulerName = "scx_lavd";
99

1010
cargoRoot = "scheds/rust/scx_lavd";

pkgs/os-specific/linux/scx/scx_layered/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
mkScxScheduler,
55
}:
66

7-
mkScxScheduler "rust" rec {
7+
mkScxScheduler "rust" {
88
schedulerName = "scx_layered";
99

1010
cargoRoot = "scheds/rust/scx_layered";

pkgs/os-specific/linux/scx/scx_rlfifo/default.nix

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
mkScxScheduler,
55
}:
66

7-
mkScxScheduler "rust" rec {
7+
mkScxScheduler "rust" {
88
schedulerName = "scx_rlfifo";
99

1010
cargoRoot = "scheds/rust/scx_rlfifo";
@@ -28,8 +28,9 @@ mkScxScheduler "rust" rec {
2828
meta = {
2929
description = "Sched-ext Rust userspace scheduler";
3030
longDescription = ''
31-
scx_rlfifo is a simple FIFO scheduler runs in user-space, based on
32-
the scx_rustland_core framework. Not a production ready scheduler.
31+
scx_rlfifo is a simple FIFO scheduler runs in user-space, based on the
32+
scx_rustland_core framework. Not for production use, but useful to test as a
33+
baseline against complex scheduling polices or for a basic FIFO scheduling approach.
3334
'';
3435
mainProgram = "scx_rlfifo";
3536
};

pkgs/os-specific/linux/scx/scx_rustland/default.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
mkScxScheduler,
55
}:
66

7-
mkScxScheduler "rust" rec {
7+
mkScxScheduler "rust" {
88
schedulerName = "scx_rustland";
99

1010
cargoRoot = "scheds/rust/scx_rustland";

0 commit comments

Comments
 (0)