Joh*_*hnW 4 performance cpu-usage
我遇到的情况是,SFTP 传输中的加密过程会占用一个 CPU 核心。然而,我的 IO 带宽(磁盘、总线和网络)还远未达到最大。
话虽这么说,所讨论的系统有多个核心:我想在加密/解密过程中利用它们。
那可能吗?如果是这样,怎么办?
注意:如果可能的话,我想避免修改后的补丁集不足以包含在上游中OpenSSH
。
不会。SFTP 协议没有为并行化留下很多机会。原始协议需要无法在数据包内并行化的密码和 MAC 算法。OpenSSH 支持GCM,它可以并行化,但 OpenSSH 不会尝试在数据包内并行化。尽管该协议允许并行处理连续的数据包,但 OpenSSH 并没有这样做。
为什么 OpenSSH 不并行化?因为并行化正确执行起来很复杂,并且只在特定场景下对性能有益:
OpenSSH 在设计时就考虑到了安全性,而复杂性是安全性的敌人,因此即使考虑并行化也是非常不符合其特性的。不过,也有人这么做了:HPN-SSH是一组允许并行处理的 OpenSSH 补丁。直到今天它仍然被维护着。
ARMv8 引入了 AES、SHA-1 和 SHA-256 的硬件加速。如果您有 ARMv8 板(无论您运行的是 32 位还是 64 位系统),请确保您的加密库(OpenSSL for OpenSSH)是使用 ARMv8 加速进行编译的。一些 ARMv8 之前的版本具有专有的加密加速功能,可能会被 Linux 内核公开,但 OpenSSL 并不支持开箱即用(已经有内核和 OpenSSL 补丁,但它们有停止维护的历史)。
如果您不想使用 HPN 补丁,那么您可以在 SSH 层之上进行并行化。如果您有许多小文件要传输,请分批复制它们并并行化批次。如果您有一个大文件要传输,请将其分块复制并并行化这些块。
归档时间: |
|
查看次数: |
1686 次 |
最近记录: |