speed 是干什么的
openssl speed 对密码运算做基准测试,输出吞吐量(每秒处理字节数)或每秒操作数,覆盖对称加密、哈希与非对称运算三类。它回答的是「这台机器在密码运算上大概是什么量级」,用于容量规划与算法选型的前期估算。结果高度依赖 CPU 型号、是否启用指令集加速(AES-NI、AVX 等)以及 OpenSSL 的编译选项,跨机器直接比数字意义有限。
基本信息
| 对称加密 | openssl speed -evp aes-256-gcm / chacha20-poly1305 |
|---|---|
| 哈希 | openssl speed -evp sha256 / sha512 |
| 非对称 | openssl speed rsa2048 / ecdsap256 / ed25519 |
| 输出口径 | 对称显示每秒字节数,非对称显示每秒签名或验签次数 |
| 影响因子 | CPU 型号、指令集加速、编译选项、当前负载 |
| 建议 | 同一环境迁移前后对比,才有可比性 |
典型使用场景
- 容量估算:推算单机能承受多少 TLS 握手与多少对称加解密吞吐。
- 算法选型:比较 AES-GCM 与 ChaCha20-Poly1305 在本机上的表现,决定移动场景偏好。
- 硬件加速确认:看 AES 吞吐是否落在有 AES-NI 的量级,判断加速是否真的生效。
- 迁移前后对比:换硬件或升级 OpenSSL 后做同样的基准,量化收益。
- 问题定位:密码运算成为瓶颈时,先量出基线再看业务栈。
常用基准组合
常用基准组合
openssl speed -evp aes-256-gcm # 对称加密吞吐
openssl speed -evp sha256 # 哈希吞吐
openssl speed rsa2048 ecdsap256 # 握手相关的非对称运算
openssl speed -evp aes-256-gcm 2>/dev/null | tail -3 # 只看汇总行,便于记录
# 记下 openssl version -a 的输出,否则数据无法复现输出读法
| 测试类别 | 输出含义 | 怎么判断 |
|---|---|---|
| 对称(-evp) | 每秒处理字节数,按块大小分行 | 看大块一行的数值,代表稳态吞吐 |
| 哈希 | 每秒处理字节数 | 与已知 CPU 量级对照,判断加速是否生效 |
| RSA 签名 | 每秒签名次数 | 握手成本的主要来源之一 |
| ECDSA / Ed25519 | 每秒签名与验签次数 | 通常远高于 RSA,据此选握手算法 |
| 版本信息 | openssl version -a | 不记录版本,跨机器结果无法比较 |
不同机器与编译选项下结果差异明显:同一代 CPU 上是否启用 AES-NI,AES 吞吐可能相差数倍。基准要在空闲机器上跑,并与目标环境同版本、同编译选项。