2016年4月18日

基盤技術

openssl-1.0.2による性能向上

  • このエントリーをはてなブックマークに追加

初稿ではAVX2による効果ではないかと記述をしておりましたが、stitchedではなく、multi bufferのサポートやその他要因が混合しており数値検証が完全ではないという指摘をいただきました。
記事内容の訂正を行います。検証が不十分なままの掲載となり申し訳ございません。また、数値や技術的な裏付けは今後再検証を進めていこうとおもいます。

サイトオペレーション本部(*1)を兼務させていただいている匿名希望の社員Mです。

私はハードウエアとソフトウエアの両面から指数関数的に増えるデータ処理にコツコツ対応する仕事をやっております。

今回の取り組みは以下の投稿に影響を受けた取り組みです。

Accelerating SSL Load Balancers with Intel® Xeon® v3 Processors
https://software.intel.com/en-us/articles/accelerating-ssl-load-balancers-with-intel-xeon-v3-processors

本投稿においても、上述の投稿にありますように、新しいハードウエアとソフトウエアをセットで使う利点を簡単に紹介していければ幸いです。

*1:サイトオペレーション本部はデータセンタ・ネットワーク・サーバー・OS・ストレージといった全社的なインフラの管理運用や調査検証などを担当しております。

結論

結論としては、Intel AVX2とopenssl-1.0.2を組み合わせることでサーバーの性能向上が実現できます。

結論としては、openssl-1.0.2を利用することでアプリケーションの性能向上が実現できました。

弊社で一般的によく利用されるApache Traffic Sereverにおいても約10%ほどのスループットが向上することを確認いたしました。

以下のグラフはすべてのトラフィックがHTTPSであることを前提にしたベンチマークの結果です。

試験環境

  • Processors
    Xeon E5-2630L v3 * 2CPU
  • Operating System
    CentOS 6.7
  • Cipher Suites
    TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

また、opensslコマンドのspeedオプションを利用した測定ではカタログスペック通り2倍の性能向上を確認しております。

openssl-1.0.2

openss-1.0.2による改善については以下のChangelogの通りです。

https://www.openssl.org/news/cl102.txt

Changes between 1.0.1l and 1.0.2 [22 Jan 2015]

*) Support for new and upcoming Intel processors, including AVX2,
BMI and SHA ISA extensions. This includes additional "stitched"
implementations, AESNI-SHA256 and GCM, and multi-buffer support
for TLS encrypt.

保守的なディストリビューションでは対応パッケージがありませんので、自分たちでビルドしていくことが求められるかもしれません。

ただ、多少の手間が発生したとしても、アップデートによりTLS-ALPNが利用可能です。この技術はHTTP/2の対応を視点に考える必ず導入していきたい技術です。

ダブルでお得な気分になれること間違いありませんのでopenssl-1.0.2の導入をオススメしたいと思います。

今後

常時SSL(AOSSL)にもあります通り、私たちエンジニアは世の中の動きに合わせてより良い技術を選択していく必要があります。

私が主務のデータプラットフォーム本部においても、2年前から本格的に、より安全で、より低レイテンシなサービス提供に向けてさまざまな技術を導入してきました。

Forward secrecy, SPDY, OCSP Stapling, HSTS(とある事情で導入中断), TLS Session Resumption, TLS-ALPN, AVX2 など。

これらの取り組みは1日にしてなるものではないので今後も地道に改善を進めていこうと考えております。

次のワクワクとしてはHTTP/2, openssl-1.1.0でサポート予定のChaCha20-Poly1305, TLS-Dynamic Record Sizingや将来的にはAVX512を考えております。

(HTTP/2は準備ができているので、2015年入社の期待の新卒さんが手をすべらせてくれれば、、、)

おわりに

CDNチームのワクワク感とは少し性質が異なるかもしれませんが、私の所属するチームだけでも75万request/secを超えるトラフィックを扱っており、この規模のトラフィックが社内にいくつもあります。

ヤフーではファシリティからアプリケーションまで自社で保有していますので、どのレイヤでも課題解決に挑戦する機会があります。フルスタックエンジニアを目指す皆様はぜひ私たちと一緒に働きましょう。

よろしくお願いします。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加