Tuning the scheduler? Desktop with a CPU-intensive task becomes rapidly unusable.

jan.grant at bristol.ac.uk jan.grant at bristol.ac.uk
Wed Sep 1 13:26:24 UTC 2010

I'm running -STABLE with a kde-derived desktop. This setup (which is 
pretty standard) is providing abysmal interactive performance on an 
eight-core machine whenever I try to do anything CPU-intensive (such as 
building a port).

Basically, trying to build anything from ports rapidly renders everything 
else so "non-interactive" in the eyes of the scheduler that, for instance, 
switching between virtual desktops (I have six of them in reasonably 
frequent use) takes about a minute of painful waiting on redraws to 

Once I pay attention to any particular window, the scheduler rapidly 
(like, in 15 agonising seconds or so) decides that the processes 
associated with that particular window are "interactive" and performance 
there picks up again. But it only takes 10 seconds (not timed; ballpark 
figures) or so of inattention for a window's processes to lapse back into 
a low-priority state, with the attendant performance problems.

I don't think my desktop usage is particularly abnormal; I doubt my level 
of frustration is, either :-) I think the issue here is that a modern 
desktop has quite a lot of associated processes, and you can't keep them 
all sufficiently "interactive" in the eyes of sched_ule to ensure they 
stay responsive.

Are there particular tunables associated with sched_ule (the manpage says 
not) that I might look at to try to address this? Or process flags I can 
set on my desktop tasks to keep them nearer the interactive end of the 

Claimed is:

           o   Interactivity heuristics that detect interactive applications
               and schedules them preferentially under high load.

but compared to the performance under sched_4bsd, what I'm seeing is an 
atrocious user experience.

At the moment I'm fiddling around with cpusets to try to pin my port 
builds to a subset of the available processors.

Suggestions are welcome!

PS. I've stuck it out with sched_ule since it's been available, but I 
should point out this isn't a sudden change in its behaviour; it's done 
this for a while.

jan grant, ISYS, University of Bristol. http://www.bris.ac.uk/
Tel +44 (0)117 3317661   http://ioctl.org/jan/
"No generalised law is without exception." A self-demonstrating axiom.

More information about the freebsd-stable mailing list