Propolice Performance in OpenBSD
by francisco roque
Stack protection, via Hiroaki Etoh's Propolice, was added to OpenBSD 3.3 userland amidst much rejoicing, despite the performance loss. Soon afterwards stack protection was also enabled in OpenBSD kernel and people questioned how much more performance loss would occur. This document attempts to answer how much of a performance difference people will see with a propolice-enabled kernel.
The following steps were performed to setup and run the tests:
OpenBSD 3.1 and 3.2 do not use propolice. The OpenBSD 3.3 snapshot did not have a propolice kernel, but all other binaries were propolice enabled. The final run includes a propolice-enabled kernel.
The difference between 3.1 and 3.2 is included in order to show any general trend between releases. Though more than two datapoints are necessary to really determine any general trend, these show that performance changes between 3.2 and 3.3 cannot be solely attributed to propolice.
These graphs show the difference on bytebench tests across OS versions. 3.1 results are given a value of 1 and other OS versions are graphed in relation to that.
Most test results show under 10% overall performance degradation. Two tests stand out from these results: filesystem and execl. The improvement in filesystem performance for the Athlon is most likely due to code changes between 3.2 and 3.3, apparently something affecting systems with more memory (did someone enable UBC when i blinked?). I don't know about the execl change, but it is important to note that this performance has been steadily decreasing and the decrease between 3.3-current with and without propolice enabled kernel is only 0.7% on the athlon and 1.2% on the pentium.
More noteworthy than the overall changes are the changes between 3.2-release and 3.3-current and between current with and without propolice.
The overall difference between 3.2 and 3.3 (sans propolice kernel) is 4.7% on the athlon and 9.3% on the pentium.
The overall difference between current with and without propolice kernels is 2% on the athlon and 0.7% on the pentium.
This table has all the results from the bytebench runs.
There are various problems and inaccuracies with the process and these results that may lead to incorrect decisions for other applications.
Other howto's and docs:
Propolice webpage - technical info and more about propolice.
The author of this document is francisco roque, who can be found at
http://www.blackant.net/
This document is copyright francisco roque 2002.
This document is released under BSD style license and may be used in whole or part for anything so long as this section remains intact.
The author takes no responsibility for damages incurred by following the steps in this document, including but not limited to the loss of data or damage to hardware. Good Luck.