Announcement

Collapse
No announcement yet.

SCHED_DEADLINE To Be Added To Linux 3.14 Kernel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Originally posted by tpruzina View Post
    There are two main approaches I can see:
    • kernel automagic (mr kolivas and his brainfuckscheduler BFS, DEADLINE, others...)
    • user-space
      • automagic scheduling hacks (based on pam/consolekit - systemd)
      • ULATENCYD

    If I may, I would like to point your atention towards ULATENCYD, which as of now, is feature complete, policy based (with working default policies) userspace scheduler that utilizes CGROUPS and other kernel subsystems (optionally BFS).
    Code is here:

    https://github.com/poelzi/ulatencyd




    As I am writing this, I'm listening to youtube tracklist and runing kernel AND firefox compilation simultaneously with multiple jobs on laptop i5 while still having very decent responsiveness.
    Ulatency does all the magic as seen here:


    Code:
    $ ulatency --no-processes
    /sys/fs/cgroup/cpu
    └─┬»cpu«                 cpu.shares=1024
      ├─┬»sys_essential«     cpu.shares=3048
      ├─┬»usr_1000«          cpu.shares=3048
      │ ├─┬»grp_28316«       cpu.shares=600
      │ ├─┬»grp_9874«        cpu.shares=600
      │ ├─┬»grp_9186«        cpu.shares=600
      │ ├─┬»grp_9121«        cpu.shares=600
      │ ├─┬»grp_8831«        cpu.shares=600
      │ ├─┬»grp_7783«        cpu.shares=600
      │ ├─┬»grp_7780«        cpu.shares=600
      │ ├─┬»grp_6153«        cpu.shares=600
      │ ├─┬»grp_417«         cpu.shares=600
      │ ├─┬»grp_1000«        cpu.shares=600
      │ ├─┬»grp_998«         cpu.shares=600
      │ ├─┬»grp_21280«       cpu.shares=600
      │ ├─┬»grp_425«         cpu.shares=600
      │ ├─┬»bg_high«         cpu.shares=1000
      │ ├─┬»ui«              cpu.shares=2000
      │ ├─┬»grp_357«         cpu.shares=600
      │ ├─┬»grp_353«         cpu.shares=600
      │ └─┬»grp_23101«       cpu.shares=600
      ├─┬»rt_tasks«          cpu.shares=3048
      ├─┬»sys_daemon«        cpu.shares=800
      ├─┬»iso_firefox«       cpu.shares=1024
      ├─┬»iso_ulatency«      cpu.shares=500
      └─┬»iso_make«          cpu.shares=1024
    Note that cpu shares are devided between several automatically scheduled processes (grp)
    and that my firefox (iso_firefox) and make batch jobs (iso_make) are on the same level as all other tasks in group usr_1000 and realtime tasks (pulseaudio among other things) but with different cpu.shares.

    All this with basic to no configuration (apart from starting the daemon, sysvinit and systemd are supported).

    TL;DR

    I highly recommend ulatencyd, it works well for desktop and it's stable enough for desktop use.
    and what You talk about this? Here only works CFS, Automatic process group scheduling, preempt, HZ = 1000 ... etc. on my kernels. Below MSi X370 with AMD APU E-350:

    https://www.youtube.com/watch?v=riI-Aim6XSs

    https://www.youtube.com/watch?v=JXGsCwY7fYc

    Comment

    Working...
    X