BSD界隈四方山話

第142回FreeBSD Meltdown対策機能による性能影響ベンチマーク

FreeBSD Meltdown対策機能による性能影響ベンチマーク

2018年3月に入ってからFreeBSDに取り込まれたMeltdown対策機能(PTIの実装およびPCIDの利用)が性能にどういった影響をもたらすかを調べたベンチマーク結果がPerformance Benchmark for PTI (aka Meltdown mitigation)として公開されました。ベンチマークはシステムコール呼び出しに関するマイクロベンチマークとbuildworldによる時間(システム時間、ユーザ時間、実時間)比較です。

実行されたベンチマークはそれぞれ次のとおりです。

システムコールマイクロベンチマーク実行コマンド
cd /usr/src/tools/tools/syscall_timing/
make
./syscall_timing getppid
buidlworldベンチマーク実行コマンド
make -C /usr/src -j48 buildworld > build.log 2>&1

ベンチマークには次のスペックのマシンが使われたと説明があります。buildworldの並列オプションが48になっているのはこのマシンのコアの数に合わせたためでしょう。

 ベンチマークに使ったマシンスペック
項目内容
プロセッサIntel Xeon E5-2650 v4 (24 cores@2.20GHz) × 2個
メモリ256GB DDR4 ECC RAM
ストレージ2.8TB SSD

ベンチマークは次の4つのパターンで実施されています。PTIが有効化どうかがMeltdown対策機能が有効になっているかどうか、PCIDはハードウェアによるサポート機能を使って性能向上をはかっているかどうかです。PCIDはデフォルトで有効化されるので、基本的にはパターン2(+)とパターン4(%)を比較することになります。

パターンPTIPCIDministat(1)出力
1無効無効x
2無効有効+
3有効無効*
4有効有効%

ベンチマーク結果はそれぞれ次のとおりです。

マイクロベンチマーク結果
x pti-off-pcid-on.log
+ pti-off-pcid-off.log
* pti-on-pcid-off.log
% pti-on-pcid-on.log
+------------------------------------------------------------------------+
|  *                            %               *                        |
|  *                            %               *                        |
|  *                            %               *                        |
|  *                            %               *                        |
|  *                            %%              **                       |
|  * +x   + x                   %%   %          *O         *            *|
||_MA_||                     |__M__A____|   |___M___A_______|            |
+------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x  10           118           162           118         123.9     14.192721
+  10           118           154           118         122.5      11.42366
No difference proven at 95.0% confidence
*  10           339           454           340         356.4     37.883447
Difference at 95.0% confidence
        232.5 +/- 26.8779
        187.651% +/- 29.8653%
        (Student's t, pooled s = 28.6058)
%  10           262           342           262         272.2     25.301735
Difference at 95.0% confidence
        148.3 +/- 19.2744
        119.693% +/- 21.5323%
        (Student's t, pooled s = 20.5135)
buildworld時間 実時間比較
x real-pti-off-pcid-on.log
+ real-pti-off-pcid-off.log
* real-pti-on-pcid-off.log
% real-pti-on-pcid-on.log
+------------------------------------------------------------------------+
|  x            + %   x     % +    %  * * +      x                      *|
||______________|_|___M_A__AMAM|___|____M_|_____|_A__________________|   |
+------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x   3       1677.08       1712.18        1691.4     1693.5533       17.6488
+   3        1686.9       1706.72       1697.84     1697.1533     9.9278262
No difference proven at 95.0% confidence
*   3       1703.57       1729.55        1705.3     1712.8067      14.52593
No difference proven at 95.0% confidence
%   3       1688.69       1701.44       1695.96     1695.3633     6.3959075
No difference proven at 95.0% confidence
buildworld時間 ユーザ時間比較
x user-pti-off-pcid-on.log
+ user-pti-off-pcid-off.log
* user-pti-on-pcid-off.log
% user-pti-on-pcid-on.log
+--------------------------------------------------------------------------+
|    *+    x      %    % +x             %                       *  *      *|
||_|__M____MA_A_|______M_|_A__________|                        |___MA_____||
+--------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x   3      50223.23      50409.49      50273.89     50302.203     96.303845
+   3      50226.37      50401.75      50230.85     50286.323      99.98752
No difference proven at 95.0% confidence
*   3      50754.05      50842.26      50781.66     50792.657     45.121459
Difference at 95.0% confidence
        490.453 +/- 170.45
        0.975014% +/- 0.341564%
        (Student's t, pooled s = 75.201)
%   3       50342.4      50535.65      50380.41     50419.487     102.37983
No difference proven at 95.0% confidence
buildworld時間 システム時間比較
x sys-pti-off-pcid-on.log
+ sys-pti-off-pcid-off.log
* sys-pti-on-pcid-off.log
% sys-pti-on-pcid-on.log
+--------------------------------------------------------------------------+
|+x     +      x+x                     %        %%  *             *      * |
||_|____A__A___M|__|                    |_____A_M__| |__________A_M_______||
+--------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x   3        2623.5       2658.68       2652.31       2644.83      18.74489
+   3       2620.79       2654.58       2637.55       2637.64      16.89518
No difference proven at 95.0% confidence
*   3       2740.31       2787.22       2772.59     2766.7067     24.002026
Difference at 95.0% confidence
        121.877 +/- 48.8099
        4.60811% +/- 1.87816%
        (Student's t, pooled s = 21.5345)
%   3       2710.22       2733.57       2730.79       2724.86      12.75458
Difference at 95.0% confidence
        80.03 +/- 36.338
        3.0259% +/- 1.40248%
        (Student's t, pooled s = 16.032)

ベンチマークの結果、次のことが確認されています。

  • PTIを有効にすることでシステムコールの時間が100%以上増加している
  • PTIとPCIDを有効にした場合とそうでない場合のbuildworldを比較した結果、実時間とユーザ時間に関しては統計上有意義な差は認められなかったが、システム時間は5%ほど遅くなった

Meltdown対策のためにPTIを実装した場合、システムコールの呼び出しが遅くなることはその仕組み上予測されていたことです。ベンチマーク結果は予測に沿った結果になっているとみられます。

Spectreセキュリティ脆弱性への対処は、どういったパターンのときにこの脆弱性を利用できるのかを洗い出してから、その条件にならないように対処を入れるといった作業が必要になります。こちらは対策が取り込まれるまでまだ時間がかかるものと見られます。

BSD界隈四方山話終了のお知らせ

BSD界隈四方山話は今回で終了です。2015年5月1日にはじまり、ほぼ3年間ほど連載してきました。日本語である程度まとまった*BSDの情報を定期的にお届けするという取り組みを続けてきました。これからも情報を提供していきたかったのですが、今回でおしまいです。これまでのご愛好、誠にありがとうございました。

全国にお届けすることは難しいのですが、FreeBSDに関する情報交換はFreeBSD勉強会で行っています。発表が終わったあとの歓談の時間でいろいろなやりとりもできますので、興味がある方は参加をご検討いただければと思います。開催場所や開催時期は@daichigotoでアナウンスしています。

今後も週に1回くらいのペースで*BSDの情報をお知らせする活動を続けていきたいとは考えています。今のところ次の媒体は見つかっていません。興味がございましたら@daichigotoまでメッセージをいただければと思います。

FreeBSD勉強会

4月26日(木)19:00~ 第70回 - ヴァル研 セミナールーム

【sysctl(8)からカーネルの中身を追う】

*BSDに限らず、UNIX系OSではユーザランド側からsysctlコマンドを実行することで、カーネルが提供する機能のON/OFFやカーネルパラメータを設定することができます。今回のFreeBSD勉強会では、sysctlによるカーネルパラメータの設定を題材にしてカーネルソースコードの読み方を解説しようと思います。

また、ソースコードを読み解く際の当たりの付け方といった、カーネルに限らないコードリーディングのノウハウについても紹介できればと思いますので、カーネルソースコードをこれから読み始めてみようと思っている方はぜひご参加ください。

【AsiaBSDCon 2018復習】

AsiaBSDCon 2018で発表された内容を振り返ります。どんな発表内容だったかちょっと理解が追いつかなかった、といった場合の手助けとして利用できるように概要をお伝えできればと思います。

本勉強会への参加者には抽選か勝ち抜きかでデーモンTシャツなどのグッズをお渡しします :)

参加登録はこちらから。

FreeBSD勉強会 発表者募集

FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合、@daichigotoまでメッセージをお願いします。30分~1時間ほどの発表資料を作成していただき発表をお願いできればと思います。

おすすめ記事

記事・ニュース一覧