SCHED_ULE should not be the default

George Mitchell george+freebsd at
Fri Dec 9 11:03:32 UTC 2011

dnetc is an open-source program from  It
tries a brute-force approach to cracking RC4 puzzles and also computes
optimal Golomb rulers.  It starts up one process per CPU and runs at
nice 20 and is, for all intents and purposes, 100% compute bound.

Here is what happens on my system, running 9.0-PRERELEASE, with and
without dnetc running, with SCHED_ULE and SCHED-4BSD, when I run the

time make buildkernel KERNCONF=WONDERLAND

(I get similar results on 8.x as well.)

SCHED_4BSD, dnetc not running:
1329.715u 123.739s 24:47.95 97.6%	6310+1987k 11233+11098io 419pf+0w

SCHED_4BSD, dnetc running:
1329.364u 115.158s 26:14.83 91.7%	6325+1987k 10912+11060io 393pf+0w

SCHED_ULE, dnetc not running:
1357.457u 121.526s 25:20.64 97.2%	6326+1990k 11234+11149io 419pf+0w

SCHED_ULE, dnetc running:
Still going after seven and a half hours of clock time, up to
compiling netgraph/bluetooth.  (Completed in another five minutes
after stopping dnetc so I could write this message in a reasonable
amount of time.)

Not everybody runs this sort of program, but there are plenty of
similar projects out there, and people who try to participate in
them will be mightily displeased with their FreeBSD systems when
they do.  Is there some case where SCHED_ULE exhibits significantly
better performance than SCHED_4BSD?  If not, I think SCHED-4BSD
should remain the default GENERIC configuration until this is fixed.
-- George Mitchell

More information about the freebsd-stable mailing list