其他分享
首页 > 其他分享> > OpenSSL造成的数据包丢失?奇怪的CPU使用率

OpenSSL造成的数据包丢失?奇怪的CPU使用率

作者:互联网

我正在编写网络应用程序,从UDP套接字读取数据包,然后使用OpenSSL对其解密.

主要功能如下:

receive(){
    while(1){
        read(udp_sock);
        decrypt_packet();
    }
}

在添加加密之前,该程序一直可以正常工作.现在,内核缓冲区和我的应用程序之间丢失了很多数据包(netstat -su-RcvbufErrors:77123并在不断增长;).数据包相当大(60K),我尝试在1Gbps以太网上使用它(因此问题在超过100Mbps后开始出现)

听起来很正常-解密花费了太多时间,数据包也变得过快.问题是-发送方和接收方的CPU使用率都不会超过30%.

在decrypt_packet()中注释掉以下语句后,问题消失了:
AES_ctr128_encrypt();

我的问题是-OpenSSL是否有可能使用了一些不占用CPU使用率的指令集(我使用了htop和Gnome系统监视器)?如果不是,还有什么会导致这种数据包丢失的原因,是否还可以使用CPU电源?

解决方法:

您的系统有多少个CPU内核?您的代码是单线程的吗?它可能会最大化单个内核,因此仅使用25%的可用CPU.

标签:openssl,cpu-usage,c-3,linux
来源: https://codeday.me/bug/20191101/1987383.html