From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.saout.de ([127.0.0.1]) by localhost (mail.saout.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UfcN8fZ2N3i6 for ; Wed, 2 Jan 2013 13:51:03 +0100 (CET) Received: from awesome.dsw2k3.info (awesome.dsw2k3.info [IPv6:2a01:198:661:1f::3]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.saout.de (Postfix) with ESMTPS for ; Wed, 2 Jan 2013 13:51:03 +0100 (CET) Date: Wed, 2 Jan 2013 13:50:55 +0100 From: Matthias Schniedermeyer Message-ID: <20130102125055.GA17370@citd.de> References: <50DF635C.90003@gmail.com> <20121229231515.GA6503@citd.de> <50DF7D3D.9030504@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <50DF7D3D.9030504@gmail.com> Subject: Re: [dm-crypt] [ANNOUNCE] cryptsetup 1.6.0-rc1 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Milan Broz Cc: dm-crypt On 30.12.2012 00:31, Milan Broz wrote: > On 12/30/2012 12:15 AM, Matthias Schniedermeyer wrote: > > > Are you sure (about AES-NI)? > > I meant difference in ecryption/decryption speed, not real > numbers (it was an example from virtual machine and > in 32bit mode in fact). > > Yes, speed should be much higher on recent systems. > > At least it motivates people to try it :) > > When you are playing with it: you can try to > unload/blackist various kernel modules > (aesni_intel, aes_x86_64, ...) and check difference. This was tested on: Core i7 2600 (Sandy Bridge), 4 cores, HT, no Overclocking Kernel 3.7.1 First run is with everyting at maxium: aesni, twofish AVX, serpent AVX: # Tests are approximate using memory only (no storage IO). PBKDF2-sha1 371308 iterations per second PBKDF2-sha256 215578 iterations per second PBKDF2-sha512 88204 iterations per second PBKDF2-ripemd160 355208 iterations per second PBKDF2-whirlpool 147936 iterations per second # Algorithm | Key | Encryption | Decryption aes-cbc 128b 633,4 MiB/s 2172,0 MiB/s serpent-cbc 128b 80,2 MiB/s 301,7 MiB/s twofish-cbc 128b 181,8 MiB/s 336,7 MiB/s aes-cbc 256b 457,0 MiB/s 1639,0 MiB/s serpent-cbc 256b 78,7 MiB/s 301,0 MiB/s twofish-cbc 256b 181,8 MiB/s 332,3 MiB/s aes-xts 256b 1149,0 MiB/s 1160,0 MiB/s serpent-xts 256b 286,7 MiB/s 279,4 MiB/s twofish-xts 256b 298,4 MiB/s 301,4 MiB/s aes-xts 512b 1022,0 MiB/s 1020,0 MiB/s serpent-xts 512b 294,7 MiB/s 281,4 MiB/s twofish-xts 512b 304,0 MiB/s 303,4 MiB/s Here are the differences after rmmod certain modules: --- AES --- aesni_intel: # Algorithm | Key | Encryption | Decryption aes-cbc 128b 633,4 MiB/s 2172,0 MiB/s aes-cbc 256b 457,0 MiB/s 1639,0 MiB/s aes-xts 256b 1149,0 MiB/s 1160,0 MiB/s aes-xts 512b 1022,0 MiB/s 1020,0 MiB/s After rmmod aesni_intel: aes_x86_64: # Algorithm | Key | Encryption | Decryption aes-cbc 128b 200,4 MiB/s 236,8 MiB/s aes-cbc 256b 157,7 MiB/s 178,6 MiB/s aes-xts 256b 230,3 MiB/s 231,8 MiB/s aes-xts 512b 175,1 MiB/s 175,6 MiB/s After rmmod aes_x86_64 aes_generic: # Algorithm | Key | Encryption | Decryption aes-cbc 128b 194,6 MiB/s 228,8 MiB/s aes-cbc 256b 154,0 MiB/s 172,7 MiB/s aes-xts 256b 232,3 MiB/s 228,0 MiB/s aes-xts 512b 175,8 MiB/s 155,0 MiB/s --- Twofish --- twofish_avx_x86_64: # Algorithm | Key | Encryption | Decryption twofish-cbc 128b 181,8 MiB/s 336,7 MiB/s twofish-cbc 256b 181,8 MiB/s 332,3 MiB/s twofish-xts 256b 298,4 MiB/s 301,4 MiB/s twofish-xts 512b 304,0 MiB/s 303,4 MiB/s After rmmod twofish_avx_x86_64 twofish_x86_64_3way: # Algorithm | Key | Encryption | Decryption twofish-cbc 128b 179,6 MiB/s 219,0 MiB/s twofish-cbc 256b 183,3 MiB/s 223,8 MiB/s twofish-xts 256b 207,0 MiB/s 208,6 MiB/s twofish-xts 512b 207,6 MiB/s 208,0 MiB/s After rmmod twofish_x86_64_3way twofish_x86_64: # Algorithm | Key | Encryption | Decryption twofish-cbc 128b 151,0 MiB/s 171,7 MiB/s twofish-cbc 256b 147,6 MiB/s 171,7 MiB/s twofish-xts 256b 170,8 MiB/s 173,1 MiB/s twofish-xts 512b 174,7 MiB/s 176,0 MiB/s After rmmod twofish_x86_64 twofish_generic: # Algorithm | Key | Encryption | Decryption twofish-cbc 128b 143,6 MiB/s 163,2 MiB/s twofish-cbc 256b 144,0 MiB/s 161,4 MiB/s twofish-xts 256b 161,4 MiB/s 162,5 MiB/s twofish-xts 512b 163,8 MiB/s 162,5 MiB/s --- Serpent --- serpent_avx_x86_64: # Algorithm | Key | Encryption | Decryption serpent-cbc 128b 80,2 MiB/s 301,7 MiB/s serpent-cbc 256b 78,7 MiB/s 301,0 MiB/s serpent-xts 256b 286,7 MiB/s 279,4 MiB/s serpent-xts 512b 294,7 MiB/s 281,4 MiB/s After rmmod serpent_avx_x86_64: serpent_sse2_x86_64: # Algorithm | Key | Encryption | Decryption serpent-cbc 128b 80,7 MiB/s 298,4 MiB/s serpent-cbc 256b 80,8 MiB/s 302,7 MiB/s serpent-xts 256b 274,5 MiB/s 265,7 MiB/s serpent-xts 512b 271,0 MiB/s 273,7 MiB/s After rmmod serpent_sse2_x86_64 serpent_generic: # Algorithm | Key | Encryption | Decryption serpent-cbc 128b 74,9 MiB/s 82,8 MiB/s serpent-cbc 256b 73,2 MiB/s 79,8 MiB/s serpent-xts 256b 78,4 MiB/s 83,2 MiB/s serpent-xts 512b 79,8 MiB/s 83,6 MiB/s With serpent_avx_x86_64 loaded and serpent_sse2_x86_64 removed # Algorithm | Key | Encryption | Decryption serpent-cbc 128b 80,2 MiB/s 303,4 MiB/s serpent-cbc 256b 81,6 MiB/s 306,4 MiB/s serpent-xts 256b 289,0 MiB/s 278,7 MiB/s serpent-xts 512b 296,0 MiB/s 282,4 MiB/s Seems the AVX version doesn't make much of a difference compared to the SSE version. And last but not least the other benchmark mentioned: cast5_avx_x86_64: # Algorithm | Key | Encryption | Decryption cast5-cbc 128b 103,3 MiB/s 302,0 MiB/s After rmmod cast5_avx_x86_64 cast5_generic: # Algorithm | Key | Encryption | Decryption cast5-cbc 128b 95,1 MiB/s 107,5 MiB/s I didn't average several runs, except for serpent the numbers differ enough that the accuracy is good enough(tm). The few runs i tried had relativly stable numbers. Btw. The encryption & decryption columns need to be 1 char wider, the aesni-numbers are too big. ;-) -- Matthias