15.4. リアルタイムインスタンスの起動およびチューニング

リアルタイムコンピュートノードをデプロイして設定したら、それらのノードでリアルタイムインスタンスを起動することができます。CPU ピニング、NUMA トポロジーフィルター、およびヒュージページを使用して、これらのリアルタイムインスタンスをさらに設定することができます。

前提条件

手順

  1. リアルタイムインスタンスを起動します。

    # openstack server create  --image <rhel> \
     --flavor r1.small --nic net-id=<dpdk_net> test-rt
  2. (オプション) インスタンスが割り当てられたエミュレータースレッドを使用していることを確認します。

    # virsh dumpxml <instance_id> | grep vcpu -A1
    <vcpu placement='static'>4</vcpu>
    <cputune>
      <vcpupin vcpu='0' cpuset='1'/>
      <vcpupin vcpu='1' cpuset='3'/>
      <vcpupin vcpu='2' cpuset='5'/>
      <vcpupin vcpu='3' cpuset='7'/>
      <emulatorpin cpuset='0-1'/>
      <vcpusched vcpus='2-3' scheduler='fifo'
      priority='1'/>
    </cputune>

CPU のピニングおよびエミュレータースレッドポリシーの設定

リアルタイム負荷用に各リアルタイムコンピュートノードの CPU を十分に確保するためには、インスタンス用仮想 CPU (vCPU) の少なくとも 1 つをホストの物理 CPU (pCPU) にピニングする必要があります。その結果、その仮想 CPU のエミュレータースレッドは、ピニングした物理 CPU 専用として維持されます。

専用 CPU のポリシーを使用するようにフレーバーを設定します。そのためには、フレーバーで hw:cpu_policy パラメーターを dedicated に設定します。以下に例を示します。

# openstack flavor set --property hw:cpu_policy=dedicated 99
注記

リソースクオータに、Real-time コンピュートノードが消費するのに十分な pCPU があることを確認してください。

ネットワーク設定の最適化

デプロイメントのニーズによっては、特定のリアルタイム負荷に合わせてネットワークをチューニングするために、network-environment.yaml ファイルのパラメーターを設定しなければならない場合があります。

OVS-DPDK 用に最適化した設定の例を確認するには、Network Functions Virtualization Planning and Configuration GuideConfiguring the OVS-DPDK parameters セクションを参照してください。

ヒュージページの設定

デフォルトのヒュージページサイズを 1 GB に設定することを推奨します。このように設定しないと、TLB のフラッシュにより仮想 CPU の実行にジッターが生じます。ヒュージページの使用に関する一般的な情報については、DPDK Getting Started Guide for Linux の Running DPDK applications を参照してください。

Performance Monitoring Unit (PMU) エミュレーションの無効化

イメージまたはフレーバーに仮想 PMU を設定すると、インスタンスは PMU メトリックを提供することができます。PMU メトリックを提供することにより、レイテンシーが生じます。

注記

NovaLibvirtCPUModehost-passthrough に設定されている場合、仮想 PMU はデフォルトで有効です。

PMU メトリックが必要ない場合は、インスタンスの作成に使用するイメージまたはフレーバーで PMU 属性を False に設定し、仮想 PMU を無効にしてレイテンシーを軽減します。

  • イメージ: hw_pmu=False
  • フレーバー: hw:pmu=False