FreeBSD 4BSD vs ULE Scheduler

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.

Summary

The better scheduler depends on both the number of processes and the working set size.

Details

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:

  • 1KB - Everything fits into L1 (5e8 cycles)
  • 4MB - At least 2 processes fit into L2 (1.2e9 cycles)
  • 32MB - All processes are cache-busting (1.6e9 cycles)

The number of iterations was chosen to so that a single process took approximately 20s.

1) 16 1350MHz UltraSPARC-IV CPUs and 64GB RAM
2) the CVS equivalent of r227746 with a few local mods provided by marius@ and mjacob@ to identify some issues with igsp(4) and schizo interrupt handling
 
ulevs4bsd.txt · Last modified: 2011/12/21 08:24 by peterjeremy
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki