NetBSD Thread Switch Performance

From Wikistix
Jump to: navigation, search

Scheduler activations were removed after 4.0. This shows the impact on thread context switch time, running on an old SPARC. The code simply has two threads fighting over a flip-flop, via a condition wait and associated mutex. Recorded values are the best of several runs.

version thread context switches per second
4.0_BETA 14894.5
4.99.16 10545.0
4.99.72 10075.0
5.99.9 10763.2

Raw output

orac:ksh$ uname -a
NetBSD orac.stix.org.au 4.0_BETA NetBSD 4.0_BETA (ORAC) #0: Tue Oct 17 19:50:31 EST 2006  stix@zion.stix.org.au:/export/netbsd/netbsd-4/obj.sparc/export/netbsd/netbsd-4/src/sys/arch/sparc/compile/ORAC sparc
orac:ksh$ ./pthreadswitch
76801 thread context switches in 5.156345 seconds
14894.5 thread context switches per second
orac:ksh$ uname -a
NetBSD orac.stix.org.au 4.99.16 NetBSD 4.99.16 (ORAC) #0: Sun Mar 25 19:45:39 EST 2007  stix@zion.stix.org.au:/export/netbsd/current/obj.sparc/export/netbsd/current/src/sys/arch/sparc/compile/ORAC sparc
orac:ksh$ ./pthreadswitch 
55297 thread context switches in 5.243912 seconds
10545.0 thread context switches per second
orac:ksh$ uname -a
NetBSD orac.stix.org.au 4.99.72 NetBSD 4.99.72 (ORAC) #0: Thu Aug 21 08:56:22 EST 2008  stix@hex.stix.org.au:/u/netbsd/current/obj.sparc/u/netbsd/current/src/sys/arch/sparc/compile/ORAC sparc
orac:ksh$ ./pthreadswitch
55297 thread context switches in 5.488561 seconds
10075.0 thread context switches per second
orac:ksh$ uname -a
NetBSD orac.stix.org.au 5.99.9 NetBSD 5.99.9 (ORAC) #0: Fri Apr 10 18:43:31 EST 2009  stix@hex.stix.org.au:/u/netbsd/20090403T0002/obj.sparc/u/netbsd/20090403T0002/src/sys/arch/sparc/compile/ORAC sparc
orac:ksh$ ./pthreadswitch 
65537 thread context switches in 6.088976 seconds
10763.2 thread context switches per second

Misinformation found herein copyright Paul Ripke (aka “stix”) stixpjr@gmail.com.