私はUDPソケットからパケットを読み込み、OpenSSLを使用してネットワークアプリケーションを解読しています。OpenSSLによるパケット損失?奇妙なCPU使用率
主な機能は次のようになります。私は、暗号化を追加するまで使用
receive(){
while(1){
read(udp_sock);
decrypt_packet();
}
}
プログラムが正常に動作します。カーネルバッファと私のアプリケーション(netstat -su-RcvbufErrors:77123とgrow;)の間には多くのパケットが失われています。パケットはかなり大きく(60K)、1Gbpsイーサネットで使用しようとします(したがって、問題は100Mbpsを超えた後に開始されます)。
通常の復号化には時間がかかり、パケットが速すぎます。問題は、 - CPU使用率が送信者と受信者の両方で30%を超えることはありません。
decrypt_packet()でこの文をコメントアウトすると、問題が解消します。 AES_ctr128_encrypt();
私の質問は、OpenSSLがCPU使用量に含まれない命令セットを使用している可能性があります(私はhtopとGnomeシステムモニタを使用します)。そのようなパケット損失を引き起こす原因が他にない場合は、CPUの処理能力はまだ処理可能ですか?
私は2つのコアを持っていますが、コアあたりの使用量を掲載していますので、私のアプリケーションは1つのスレッドの消費電力の25%を使用しています。 – harnen