Tuesday 28 April 2020

linux-5.6-ck1, MuQSS version 0.199 for linux-5.6

Announcing a new -ck release, 5.6-ck1  with the latest version of the Multiple Queue Skiplist Scheduler, version 0.199. These are patches designed to improve system responsiveness and interactivity with specific emphasis on the desktop, but configurable for any workload. Since MuQSS has reached version 0.199, I'm left wondering what I should make the next version. As it is likely to be just as trivial an update as this one was, version 0.200 will not actually be a significant update to some new fancy scheduler, it will just coincidentally bump the minor  version up. That said, MuQSS has been stable for a very long time so I should have bumped it to version 1.0 quite a while back.

-ck1 patch:
Git tree:
MuQSS only:
Git tree:
Web: http://kernel.kolivas.org

This is a resync from 5.5-ck1.



  1. How about this versioning scheme:

    MuQSS 1.00-5.6 - with a kernel version suffix.
    So if there are no changes in MuQSS itself on kernel updates you can keep the MuQSS version and only change the kernel suffix e.g. 1.00-5.7

  2. Thank you very much.

  3. Link for "patch-5.6-ck1" is dead.

  4. I am getting the following error:

    kernel/sched/MuQSS.c: In function 'sched_tick_remote':
    kernel/sched/MuQSS.c:3481:35: error: 'struct task_struct' has no member named 'se'
    3481 | delta = rq_clock_task(rq) - curr->se.exec_start;

    1. I receive the following error when compiling on Arch with GCC 9.3.0:

      kernel/sched/MuQSS.c: In function ‘sched_tick_remote’:
      kernel/sched/MuQSS.c:3485:37: error: ‘struct task_struct’ has no member named ‘se’; did you mean ‘rseq’?
      3485 | delta = rq_clock_task(rq) - curr->se.exec_start;
      | ^~
      | rseq

      and have posted my config here on Pastebin: https://pastebin.com/GDkTv43n

      Seems to compile and run fine as long as I switch away from full tickless/dynticks (in my case switched to tickless idle).

    2. Thanks. Tickless idle is the correct config for most situations anyway so I recommend against using full tickless, but I'll work on a solution.

  5. Frame rate drops about 10-15% after some time while gaming in wine.

    I was previously using tk-glitch's unofficial MuQQS patch for 5.6 (I was using it on 5.6.6) - it works fine.
    After switching to MuQQS 0.199 (on 5.6.7) frame rate started to drop.
    I'm not sure if it's an issue on my end - nevertheless I post it to see if people have similar issues.

    1. I can't say i have noticed a fps drop "over time" when gaming with wine. Although i did not test the rebased tkg MuQSS patch, but use the whole -ck patchset posted for 5.6

  6. Full patch set directory http://ck.kolivas.org/patches/5.0/5.6/5.6-ck1/patches/ seems to contain v0.198 of the patch.

    1. That's an unfortunate patch naming related oversight. The actual patch is still version 0.199.

    2. Good to know, thanks.

      I just glanced at the filename and the patch header which had the same Date and Subject lines as v0.198 patch.

  7. Con, I had a look at load avg calculations and noticed, that for some reason load and irq load calculations have curload factored in twice, like this:
    load += curload * curload * SCHED_CAPACITY_SCALE * us_interval * 5 / 262144;

    Is this correct?

    BR, Eduardo

    1. Well spotted. I'll investigate and it probably is an error.