gpt4 book ai didi

multithreading - 充分利用硬件加速器

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:35 24 4
gpt4 key购买 nike

我想使用 OpenSSL 来处理我们所有的 SSL 通信(客户端和服务器端)。我们想使用硬件加速卡来卸载繁重的密码计算。

我们注意到在 OpenSSL 的“速度”测试中,可以直接调用加密函数(例如 RSA_sign/decrypt 等)。为了充分利用 HW 容量,需要多个线程(最多 128 个线程)来向卡加载请求并确保 HW 卡永远不会空闲。

我们想使用高级 OpenSSL API 来处理 SSL 连接(例如 SSL_connect/read/write/accept),但是这个 API 没有公开实际加密操作的位置完毕。例如,当调用 SSL_connect 时,我们并不知道 RSA 操作是在哪个点完成的,我们也不知道哪些调用会导致繁重的密码计算,而只引用那些加速器。

问题:

  1. 如何在充分利用硬件加速器的同时使用高级 API?我应该使用多线程吗?
  2. 是否有执行此操作的“标准”方法? (实现例)
  3. (已在更新中回答)您是否熟悉英特尔的 asynchronous OpenSSL ?看起来他们正试图解决这个确切的问题,但我们找不到实际的代码或使用示例。

更新

  1. 来自 Accelerating OpenSSL* Using Intel® QuickAssist Technology你可以看到,英特尔还提到了多线程/进程的利用:

    The standard release of OpenSSL is serial in nature, meaning it handles one connection within one context. From the point of view of cryptographic operations, the release is based on a synchronous/ blocking programming model. A major limitation is throughput can be scaled higher only by adding more threads (i.e., processes) to take advantage of core parallelization, but this will also increase context management overhead.

  2. Intel 的OpenSSL 分支终于找到了here .更多信息可以在 pdf 中找到 here .

    看起来英特尔改变了 OpenSSL ENGINE 的工作方式 - 它将工作发布到驱动程序并立即返回,同时应该轮询相应的结果。

    如果你使用其他的SSL加速器,相应的OpenSSL ENGINE也要修改。

最佳答案

根据 Interpreting openssl speed output for rsa with multi option , -multi 不会“并行化”工作或其他东西,它只是并行运行多个基准测试。

因此,您的 HW 卡的负载基本上会受到当前可用工作量的限制(请注意,在一般行业中,传统上认为 80% 的计划容量负载是负载峰值情况下的最佳选择)。当然,运行多个服务器线程/进程会给您带来与多个基准测试相同的效果。

OpenSSL supports multiple threads provided that you give it callbacks to lock shared data .对于多个进程,它会发出关于 reusing data state 的警告继承自 parent 。

这就是垂直缩放。对于水平缩放:

  • openssl 通过异步 BIO 支持异步 I/O
  • 但是,它的基本加密操作和内部 ENGINE 调用是同步的,改变这一点需要进行逻辑改革
  • 让他们提供异步操作的私有(private)努力have met severe criticism由于重大设计缺陷

英特尔 announced some "Asynchronous OpenSSL" project (08.2014) 与其硬件一起使用,但 the linked white paper几乎没有提供有关其实现和开发状态的详细信息。一名开发人员published some related code (10.2015),指出它“足够稳定,可以概览”。

关于multithreading - 充分利用硬件加速器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com