Crates.io | scx_loader |
lib.rs | scx_loader |
version | 1.0.6 |
source | src |
created_at | 2024-09-07 17:17:17.917696 |
updated_at | 2024-11-06 20:26:52.630329 |
description | DBUS on-demand loader of sched-ext schedulers |
homepage | |
repository | |
max_upload_size | |
id | 1367420 |
size | 101,696 |
scx_loader
is a utility that provides a convenient DBUS interface for starting, stopping, and managing sched_ext schedulers.
StartScheduler
Method: Launches a scheduler specified by its scx_name
(e.g., "scx_rusty") and a scheduler mode (profile) represented as an unsigned integer.StartSchedulerWithArgs
Method: Starts a scheduler with its scx_name
and allows passing arbitrary CLI arguments directly to the scheduler.StopScheduler
Method: Terminates the currently running scheduler.SwitchScheduler
Method: Stops the current scheduler and starts the specified scheduler with the given mode.SwitchSchedulerWithArgs
Method: Stops the current scheduler and starts the specified scheduler with the provided arguments.CurrentScheduler
Property: Returns the scx_name
of the active scheduler or "unknown" if none is running.SchedulerMode
Property: Provides information about the currently active scheduler's mode (profile).SupportedSchedulers
Property: Lists the schedulers currently supported by scx_loader
.scx_loader
interacts with schedulers through its DBUS interface. You can use tools like dbus-send
or gdbus
to communicate with it.
Examples using dbus-send
:
Start a Scheduler:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StartScheduler string:scx_rusty uint32:0
(This starts scx_rusty
with scheduler mode 0)
Start a Scheduler with Arguments:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StartSchedulerWithArgs string:scx_bpfland array:string:"-k","-c","0"
(This starts scx_bpfland
with arguments -k -c 0
)
Stop the Current Scheduler:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.StopScheduler
Switch Scheduler:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchScheduler string:scx_lavd uint32:2
(This switches to scx_lavd
with scheduler mode 2)
Switch Scheduler with Arguments:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.scx.Loader.SwitchSchedulerWithArgs string:scx_bpfland array:string:"-k","-c","0"
(This switches to scx_bpfland
with arguments -k -c 0
)
Get the Currently Active Scheduler:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Properties.Get string:org.scx.Loader string:CurrentScheduler
Get the Supported Schedulers:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Properties.Get string:org.scx.Loader string:SupportedSchedulers
Note: Replace the example scheduler names and arguments with the actual ones you want to use.
scx_loader
provides the org.scx.Loader
DBUS service and is automatically started by dbus-daemon
when an application calls into this service. Users and administrators do not need to manually start the scx_loader
daemon.
scx_loader
is managed by the scx_loader.service
systemd unit. This service is distinct from the scx.service
unit, which is used to manage schedulers directly (without DBUS).
In case of issues with scx_loader
, you can debug the service using the following steps:
Check the service status:
systemctl status scx_loader.service
View the service logs:
journalctl -u scx_loader.service
Enable debug logging: You can temporarily enable debug logging by modifying the systemd service file:
sudo systemctl edit scx_loader.service
[Service]
section:
Environment=RUST_LOG=trace
sudo systemctl restart scx_loader.service
scx_loader
provides a D-Bus Introspection XML file that describes its interface. This file can be used by language bindings and tools to interact with the service.
Using the Introspection XML:
The introspection XML can be accessed in two ways:
Through the D-Bus introspection interface:
dbus-send --system --print-reply --dest=org.scx.Loader /org/scx/Loader org.freedesktop.DBus.Introspectable.Introspect
This will output the XML describing the scx_loader
interface.
From the project repository:
The XML file is also available in the provided file org.scx.Loader.xml
.
You can then use this XML with tools like gdbus-codegen
or other language-specific D-Bus bindings to generate code that interacts with scx_loader
.
For example, with gdbus-codegen
, you can generate C code for the interface:
gdbus-codegen --generate-c-code scx-loader-bindings org.scx.Loader.xml
This will produce header and source files that you can use to interact with scx_loader
from your C code.
scx_loader
is under active development. Future improvements may include: