Re: comparison of the AF_ALG interface with the /dev/crypto

From: Phil Sutter
Date: Thu Sep 01 2011 - 09:39:57 EST


Herbert,

On Thu, Sep 01, 2011 at 12:15:34PM +1000, Herbert Xu wrote:
> Nikos Mavrogiannopoulos <nmav@xxxxxxxxxx> wrote:
> >
> > Given my benchmarks have no issues, it is not apparent to me why one
> > should use AF_ALG instead of cryptodev. I do not know though why AF_ALG
> > performs so poor. I'd speculate by blaming it on the usage of the socket
> > API and the number of system calls required.
>
> The target usage of AF_ALG is hardware offload devices that cannot
> be directly used in user-space, not software crypto on implementations
> such as AESNI/Padlock.
>
> Going through the kernel to use something like AESNI/Padlock or
> software crypto is insane.
>
> Given the intended target case, your numbers are pretty much
> meaningless as cryptodev's performance can be easily beaten
> by a pure user-space implementation.

I ran the benchmarks on my OpenRD Ultimate, an embedded device equipped
with the Marvell Kirkwood SoC, which also contains the CESA crypto
engine. Hopefully a less "insane" use-case, also from your point of
view. Here are the results of the "fulltest", i.e. init, AES128 and deinit
measured as a whole:

chunksize af_alg cryptodev (100 * cryptodev / af_alg)
--------------------------------------------------------------------------
512 4.169 MB/s 7.113 MB/s 171 %
1024 7.904 MB/s 12.957 MB/s 164 %
2048 13.163 MB/s 19.683 MB/s 150 %
4096 20.218 MB/s 26.960 MB/s 133 %
8192 27.539 MB/s 34.373 MB/s 125 %
16384 33.730 MB/s 39.997 MB/s 119 %
32768 37.399 MB/s 42.727 MB/s 114 %
65536 40.004 MB/s 44.660 MB/s 112 %

although I'm quite sure there's a reason why these values are
meaningless as well, I would like to point out that cryptodev-linux has
outperformed AF_ALG in every situation they have been compared so far.

Greetings, Phil
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/