看了 https://whycan.com/t_2719.html 后决定搞搞 V3s 的硬件 crypto 加速器,看看能不能降低 curl 用 https 时候 CPU 的占用率。
先 make nconfig,把 buildroot 里的 cryptodev 这个包给勾选上
然后再 make linux-nconfig,把 Enable loadable module support 打开,再把 Cryptographic API 目录中的这些全部勾选上:
-*- Cryptographic algorithm manager
<*> Userspace cryptographic algorithm configuration
-*- Null algorithms
<*> CBC support
<*> ECB support
<*> User-space interface for hash algorithms
<*> User-space interface for symmetric key cipher algorithms
<*> User-space interface for random number generator algorithms
<*> User-space interface for AEAD cipher algorithms
[*] Hardware crypto devices --->
<*> Support for Allwinner Security System cryptographic accelerator
[*] Support for Allwinner Security System PRNG
然后运行 make linux-rebuild,make all,完成后把 sdcard.img 烧写到 tf 卡上
开机登陆 root 账户后运行 modprobe cryptodev,然后用这个指令检查能否看见 /dev/crypto:
# openssl engine -c -tt
(devcrypto) /dev/crypto engine
[DES-CBC, DES-EDE3-CBC, AES-128-CBC, AES-192-CBC, AES-256-CBC, AES-128-ECB, AES-192-ECB, AES-256-ECB, MD5, SHA1]
[ available ]
(dynamic) Dynamic engine loading support
[ unavailable ]
以下是测试的结果,用的指令是 openssl speed -evp <cipher_name> -elapsed
很奇怪,用了 cryptodev 硬件加速后,居然比不用还要慢。。。不知道为什么
### cryptodev unloaded ###
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 18810.66k 23347.43k 25082.11k 25546.07k 25684.65k 25695.57k
aes-192-cbc 16683.07k 20266.92k 21494.95k 21869.57k 21973.67k 21981.87k
aes-256-cbc 15192.08k 17997.65k 19016.11k 19281.24k 19360.43k 19365.89k
md5 6845.81k 21962.92k 54481.83k 88408.75k 107834.03k 109532.50k
sha1 5587.66k 16467.97k 37492.65k 55125.33k 63941.29k 64678.57k
### cryptodev loaded ###
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 3116.29k 8921.07k 16968.36k 21918.72k 23582.04k 23751.34k
aes-192-cbc 2927.55k 8132.22k 15011.53k 18872.66k 19830.10k 19895.64k
aes-256-cbc 2778.49k 7607.04k 13453.14k 16726.02k 17446.23k 17563.65k
md5 764.50k 2949.72k 10953.05k 33556.48k 82395.14k 92034.39k
sha1 690.34k 2573.21k 8964.01k 23353.34k 43308.37k 46088.19k
然后我试了试用 curl 通过 https 下载个大文件,发现 cryptodev 用不用,CPU占用率都在95%左右浮动
V3s 的硬件 crypto 加速器还有哪位大佬用过吗?有没有哪位能分享一下经验?
多谢多谢!
离线
可能还是什么驱动没配置好,这些都是 kernel 用软件实现的 generic 驱动,并不是 V3s 的硬加速 crypto engine...
# cat /proc/crypto
name : ecb(aes)
driver : ecb(aes-generic)
module : kernel
...
name : cbc(aes)
driver : cbc(aes-generic)
module : kernel
...
name : aes
driver : aes-generic
module : kernel
...
离线
看了看 kernel change log,发现 5.10 版本合并了很多 Allwinner V3s 相关的代码,包括 crypto engine
把 5.3.5 内核换成了 5.10 后,果然出现了 sun4i-ss 驱动,并且 cat /proc/crypto 也显示了相关 sun4i-ss 硬驱动的 crypto 算法
不过用 openssl speed 测试,还是发现硬加速与软件 crypto 算法的速度并没有什么区别,curl 的 CPU 占用率也还是 95% 左右。。。
离线