There has recently been an extremely long thread SCHED_ULE should not be the default spread between the FreeBSD-stable and FreeBSD-current mailing lists. This thread contains lots of claims and counter-claims but very little hard evidence to back up the claims.
The better scheduler depends on both the number of processes and the working set size.
The following represents the results of a synthetic benchmark run on a 16-core SunFire V890 server1) running FreeBSD 10-current2). A dmesg can be found HERE. This is a server-grade NUMA SPARC system so the results aren’t necessarily comparable with a multicore x86 desktop system.
The benchmark runs multiple copies (processes) of a core that just repeatedly cycles through an array of doubles (to provide a pre-defined working set size), incrementing them. The source code can be found at XXX. The tests were run in single-user mode using both the 4BSD and ULE schedulers. In each case, the test was run 5 times with 1, 2, 4, 6, 8, 10, 12, 14, 15, 16, 17, 18, 20, 24, 28, 31, 32, 33, 36, 40, 48, 56 and 64 processes and working-set sizes of:
The number of iterations was chosen to so that a single process took approximately 20s.