On 8/1/22 19:11, Sasha Algisi wrote: > Hello everyone, > > This patchset aims at adding support for the SCHED_DEADLINE Linux > scheduling policy for vcpus, io-threads and emulator processes. > > In fact, libvirt currently supports SCHED_OTHER, SCHED_BATCH, > SCHED_IDLE, SCHE_FIFO and SCHED_RR, but not SCHED_DEADLINE. > SCHED_DEADLINE is a policy implementing an algorithm originating from > the real-time scheduling community, but it can be useful outside of > the real-time computing field as well. > > It allows one to set a specific amount of CPU time that a task should > receive with a given periodicity, and withing a certain deadline. > E.g., task t should be scheduled at least for 50 ms every 100 ms. To > achieve this, it needs 3 parameters: runtime, deadline and period > (although period can just be equal to deadline, which is what happens > automatically if one sets period=0). It must always hold that: > runtime <= deadline <= period (and this is enforced by the kernel, > but checks are included in the patches, so that meaningful and easy > to interpret error messages can be printed to the user). > > More info on SCHED_DEADLINE are available here: > > https://docs.kernel.org/scheduler/sched-deadline.html > > The interface will look like this, e.g., for setting SCHED_DEADLINE > as a policy for 3 (0-2) vcpus, with runtime = 10000000, deadline = > 15000000 and period = 20000000: > > <cputune> > ... > <vcpusched vcpus="0-2" scheduler="deadline" runtime="10000000" > deadline="15000000" period="20000000"/> > ... > </cputune> > > This a link to a branch containing the patches: > > https://gitlab.com/Algisi-00/libvirt/-/tree/sched-deadline > > And this is the link to results of running the CI on such branch: > > https://gitlab.com/Algisi-00/libvirt/-/pipelines/601795712 > > Note that the jobs that are failing are also failing in the exact > same way without these patches applied. > > Feedback is welcome and very much appreciated. > > Thanks and regards. > > Sasha Algisi (3): > virprocess: define sched_attr and sched_setattr > virprocess: add the SCHED_DEADLINE scheduling policy > domain_conf: add SCHED_DEADLINE support in the XML configuration > > NEWS.rst | 5 ++ > docs/formatdomain.rst | 16 +++- > src/ch/ch_process.c | 3 +- > src/conf/domain_conf.c | 52 +++++++++++-- > src/conf/domain_conf.h | 3 + > src/conf/schemas/domaincommon.rng | 16 ++++ > src/qemu/qemu_process.c | 8 +- > src/util/virprocess.c | 123 +++++++++++++++++++++++++++++- > src/util/virprocess.h | 6 +- > 9 files changed, 216 insertions(+), 16 deletions(-) > Hey, the code looks good. However, we require that the code compiles after each patch, which is not the case with your series. The reason for our requirement is simple: easy git bisect. Therefore, it's okay if feature does not work until the very last commit. We often have patches/commits that work gradually towards grand finale. Can you please fix that in v2? Michal