Re: comparison of the AF_ALG interface with the /dev/crypto
From: Phil Sutter <phil@nwl.cc>
Date: 2011-09-01 13:39:55
Also in:
lkml
Herbert, On Thu, Sep 01, 2011 at 12:15:34PM +1000, Herbert Xu wrote:
Nikos Mavrogiannopoulos [off-list ref] wrote:quoted
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