2018-02-17

x86/x64最適化勉強会に行ってきた

申し込もうと思ったら、もうすでに満席だったのでLTやるということで参加できた。セーフ。

何をLTで話そうと考えてたのだけど、ScalewayのARM64クラウドが思ったよりパフォーマンスがよくなくて、その理由を調べてたところこれがThunderXを採用してたために遅かった。それでいろんなベンチマークを取ってたら20ドルで買ったPINE64よりも遅い話が見つかったのでnssのコードを書くのとARMv8の勉強を兼ねて発表してきた



FirefoxではOpenSSLを使わずにNetscape由来のnssというライブラリを使っていて、今はRedHatと共同開発ということになっている。これがARMの上だと全く最適化を入れていない (昔ARMv7の頃に最適化は自分が書いた) し、ARMv8にはせっかくAESとかSHA256とかのハードウェア命令が入っているので、それを使ってみようということで3日間くらい仕事終わりの深夜にコードを書いてた。

パフォーマンスデータもCortex-A72とかNVIDIA Danverとかのデータを取りたかったけど、android/aarch64用にベンチを取るためのコンパイル環境を整える時間がなかったので、取ってない。取ったら資料をアップデートするかも。Cortex-A72の解析用にHiKey960買おうかな。

ということで、いろいろ勉強にはなったので、後でパッチを投げておく。たぶんFirefox 62には間に合えばって感じで。

追記 (2019.7)

AESやGCMの最適化はGecko 70には入ります。なのでFirefox Preview (Fenix) の次のメジャーバージョンには含まれます。

追記 (2019.11)

最適化が入るのは71に変更になりました。Firefox for Androidは68で終了 (後継バージョンはFenix) なので、関係するのは、Linuxディストリビューションとかに含まれるLinux版くらいです。