On Fri, 2010-04-02 at 15:57 -0400, Victor Duchovni wrote:
> The performance of the 1.0.0 AES algorithm as reported by "openssl speed",
> appears to be much lower with block sizes of 16, 64 and 256 bytes than
> with previous releases. Larger block sizes of 1024 and 8192 bytes show
> good performance. Is this to be expected? Tests were run on a RedHat
> Linux system with an Intel X86-64 CPU for both the 32-bit and 64-bit
> builds of the code. Should lower AES performance for small buffer sizes
> be expected with 1.0.0, or is "speed aes" reporting inaccurate data?

I investigated this a little. You compared various 0.9.x revisions with
1.0.0, but there's a _big_ jump between those branches, and I wanted to
look at the history of the branch which became 1.0.0 (or current HEAD,
which is close enough).

Obviously the first thing to do was to import the code into a modern
version control system so that I could actually do useful things with
it. I used Keith Packard's parsecvs to create a git repository, which
I've put at http://git.infradead.org/users/dwmw2/openssl-parsecvs.git

My testing was done on an 8-way Tylersburg-HEDT system, with cpu speed
pinned at 3GHz to avoid complications from power saving. It runs Fedora
11, with GCC 4.4.1. I tested only 64-bit.

I started with current HEAD, then stepped back by 100 commits at a time,
rebuilding with default options from ./config then running
'openssl speed aes' and charting the results -- which are at
http://david.woodhou.se/aesspeed.png (and .dat and .gnuplot).

As you can see, the results all got much faster once I got back in time
to about mid-2007. Using 'git-bisect' I was able to find the offending
commit which had caused the performance degradation:
http://git.infradead.org/users/dwmw2/openssl-parsecvs.git/commitdiff/25e9f96b

Another interesting thing that you can't quite make out on the graph is
that there was a significant _improvement_ in aes128-cbc and aes192-cbc
performance on smaller sizes immediately before it got worse. See the
data for commit id 1a1c46a9f4df4fa3fcfa5343cdd7136e164bae27 in the raw
results. Note that I didn't bisect this change so it's almost certainly
not precisely that commit which caused it. And that aes256-cbc
performance got worse while aes128-cbc and aes192-cbc got better.

I resisted the temptation to include AESNI scores on the graph; they'd
have screwed up the scale :)

-- 
David Woodhouse                            Open Source Technology Centre
david.woodho...@intel.com                              Intel Corporation

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to