25.4. CPU ピニングパラメーターの更新

Red Hat OpenStack Platform 16.1 では、CPU ピニングに新たなパラメーターが使用されます。

NovaComputeCpuDedicatedSet
専用の (ピニングされた) CPU を設定します。
NovaComputeCpuSharedSet
共有の (ピニングされていない) CPU を設定します。

Red Hat OpenStack Platform 16.1 へのアップグレードが完了したら、CPU ピニングの設定を NovaVcpuPinSet パラメーターから NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet のパラメーターに移行する必要があります。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. コンピュートノードが同時マルチスレッド (SMT) をサポートするが hw:cpu_thread_policy=isolate ポリシーでインスタンスを作成している場合は、以下のオプションのいずれかを実施する必要があります。

    • hw:cpu_thread_policy スレッドポリシーの設定を解除し、インスタンスのサイズを変更します。

      1. source コマンドでオーバークラウドの認証ファイルを読み込みます。

        $ source ~/overcloudrc
      2. フレーバーの hw:cpu_thread_policy プロパティーの設定を解除します。

        (overcloud) $ openstack flavor unset --property hw:cpu_thread_policy <flavor>
        注記
        • hw:cpu_thread_policy 属性の設定を解除すると、ポリシーがデフォルトの prefer ポリシーに設定されます。これにより、インスタンスは SMT 対応のコンピュートノードを使用するように設定されます (利用可能な場合)。hw:cpu_thread_policy 属性を require に設定することもできます。これにより、SMT 対応のコンピュートノードに対するハード要件が設定されます。
        • コンピュートノードに SMT アーキテクチャーがない場合や、スレッドシブリングが利用可能な CPU コアが十分にない場合には、スケジューリングが失敗します。これを回避するには、hw:cpu_thread_policyrequire ではなく prefer に設定します。デフォルトの prefer ポリシーでは、スレッドシブリングが利用可能な場合には、必ず使用されます。
        • hw:cpu_thread_policy=isolate を使用する場合は、SMT を無効にするか、SMT をサポートしないプラットフォームを使用する必要があります。
      3. 新しいスレッドポリシーを使用するようにインスタンスを変換します。

        (overcloud) $ openstack server resize --flavor <flavor> <server>
        (overcloud) $ openstack server resize confirm <server>

        hw:cpu_thread_policy=isolated ポリシーを使用するすべての固定インスタンスに対して、このステップを繰り返します。

    • コンピュートノードからインスタンスを移行して、コンピュートノードの SMT を無効にする。

      1. source コマンドでオーバークラウドの認証ファイルを読み込みます。

        $ source ~/overcloudrc
      2. コンピュートノードが新しい仮想マシンを受け入れるのを無効にします。

        (overcloud) $ openstack compute service list
        (overcloud) $ openstack compute service set <hostname> nova-compute --disable
      3. コンピュートノードからすべてのインスタンスを移行します。インスタンスの移行についての詳細は、コンピュートノード間の仮想マシンインスタンスの移行 を参照してください。
      4. コンピュートノードをリブートし、コンピュートノードの BIOS で SMT を無効にします。
      5. コンピュートノードをブートします。
      6. コンピュートノードを再度有効にします。

        (overcloud) $ openstack compute service set <hostname> nova-compute --enable
  3. stackrc ファイルを取得します。

    $ source ~/stackrc
  4. NovaVcpuPinSet パラメーターが含まれる環境ファイルを編集します。
  5. CPU ピニングの設定を NovaVcpuPinSet パラメーターから NovaComputeCpuDedicatedSetNovaComputeCpuSharedSet に移行します。

    • これまでピニングされたインスタンス用に使用されていたホストの場合には、NovaVcpuPinSet の値を NovaComputeCpuDedicatedSet に変更します。
    • これまでピニングされていないインスタンス用に使用されていたホストの場合には、NovaVcpuPinSet の値を NovaComputeCpuSharedSet に変更します。
    • NovaVcpuPinSet の値が設定されていない場合には、ノード上でホストするインスタンスの種別に応じて、すべてのコンピュートノードのコアを NovaComputeCpuDedicatedSet または NovaComputeCpuSharedSet のどちらかに割り当てる必要があります。

    たとえば、以前の環境ファイルに以下のピニング設定が定義されていたとします。

    parameter_defaults:
      ...
      NovaVcpuPinSet: 1,2,3,5,6,7
      ...

    設定をピニング設定に移行するには、NovaCompute CpuDedicatedSet パラメーターを設定し、NovaVcpuPinSet パラメーターの設定を解除します。

    parameter_defaults:
      ...
      NovaComputeCpuDedicatedSet: 1,2,3,5,6,7
      NovaVcpuPinSet: ""
      ...

    設定をピニングしない設定に移行するには、NovaComputeCpuSharedSet パラメーターを設定し、NovaVcpuPinSet パラメーターの設定を解除します。

    parameter_defaults:
      ...
      NovaComputeCpuSharedSet: 1,2,3,5,6,7
      NovaVcpuPinSet: ""
      ...
    重要

    NovaComputeCpuDedicatedSet または NovaComputeCpuSharedSet のいずれかが、NovaVcpuPinSet で定義した設定と一致するようにします。NovaComputeCpuDedicatedSet または NovaComputeCpuSharedSet のいずれかの設定を変更する、またはその両方を設定するには、設定を更新する前にピニング設定のコンピュートノードが 1 つのインスタンスも実行していないようにします。

  6. ファイルを保存します。
  7. デプロイメントコマンドを実行して、新しい CPU ピニングパラメーターでオーバークラウドを更新します。

    (undercloud) $ openstack overcloud deploy \
        --stack _STACK NAME_ \
        --templates \
        ...
        -e /home/stack/templates/<compute_environment_file>.yaml
        ...