spectre_v2=リトポリンとパフォーマンス

spectre_v2=リトポリンとパフォーマンス

https://stackoverflow.com/questions/48089426/what-is-a-retpoline-and-how-does-it-work

https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html?highlight=kernel%20parameters

Spectre Variant 2 (間接分岐推測) 脆弱性の軽減を制御します。基本操作は、ユーザー空間攻撃からカーネルを保護します。

                  spectre_v2=

                   on   - unconditionally enable, implies
                          spectre_v2_user=on
                   off  - unconditionally disable, implies
                          spectre_v2_user=off
                   auto - kernel detects whether your CPU model is
                          vulnerable

                   Selecting 'on' will, and 'auto' may, choose a
                   mitigation method at run time according to the
                   CPU, the available microcode, the setting of the
                   CONFIG_RETPOLINE configuration option, and the
                   compiler with which the kernel was built.

                   Selecting 'on' will also enable the mitigation
                   against user space to user space task attacks.

                   Selecting 'off' will disable both the kernel and
                   the user space protections.

                   Specific mitigations can also be selected manually:

                   retpoline         - replace indirect branches
                   retpoline,generic - google's original retpoline
                   retpoline,amd     - AMD-specific minimal thunk

                   Not specifying this option is equivalent to
                   spectre_v2=auto.

たとえば、HPCおよび制御された環境で最適なコンピューティングパフォーマンスを得るために(a)この攻撃を実行することができ(ログインに十分な問題がある)、(b)そのようなタスクを実行できるユーザーはいません。とにかく feat から何の利点も得られないでしょう。このカーネルパラメータをoffに設定する必要がありますか?これはIntel LGA 3647 Platinum 8xxxシリーズCPUを搭載したサーバー上にあり、RHEL 7.9がインストールされると自動的に実行されますGRUB_CMDLINE_LINUX= sceptre_v2=retpoline

ベストアンサー1

はい。ボーダーコントロールに自信があり、リスクとパフォーマンスへの影響を喜んで受け入れる意思がある場合は、spectre_v2=offスペクター/メルトダウンの軽減を有効にしないように設定できます。整合性を確保するために、次のクイックスクリプトを使用できます。

#!/bin/bash
#Works in RHEL7; does not work in RHEL8

items="pti_enabled retp_enabled ibrs_enabled"
DIR=/sys/kernel/debug/x86

echo "These should all be 0:"

for item in $items; do
        printf "%-13s " $item: ; cat $DIR/$item;
done
need_to_set=false
for item in $items; do
        grep -q 0 $DIR/$item || { echo "$item is not 0"; need_to_set=true; }
done
$need_to_set && {
        read -p "Found value(s) that are not 0. Enter 'y' if you want 0 them: " a
        [ "$a" = "y" ] && {
                for item in $items; do
                        echo 0 > $DIR/$item
                done
                echo Done.
                exit 0
        }
        echo "OK, will not set it to 0."
}

...もちろんリブートするまで、軽減機能は無効になります。提案されているように、カーネルコマンドラインを変更することがこれに固執する方法です。

ちなみに、これはRHEL 7.9ベースです。私はコマンドラインオプションが8で同じだと思いますが、確認方法が異なります。

おすすめ記事