Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

6.2. SR-IOV の設定

注記

以下の例で説明する CPU の割り当て、確保するメモリー、および NIC の設定は、ご自分のトポロジーおよびユースケースとは異なる場合があります。

  1. NeutronSriovAgentNeutronSriovHostConfig、およびデフォルトの Compute サービスを実行する OpenStack クラスターのノードを定義するために、ビルトインの ComputeSriov を生成します。

    # openstack overcloud roles generate \
    -o /home/stack/templates/roles_data.yaml \
    Controller ComputeSriov
  2. SR-IOV コンテナーが準備されるように、overcloud_images.yaml を生成する際に neutron-sriov.yaml および roles_data.yaml ファイルを含めます。

    SERVICES=\
    /usr/share/openstack-tripleo-heat-templates/environments/services
    
    openstack overcloud container image prepare \
    --namespace=registry.redhat.io/rhosp13 \
    --push-destination=192.168.24.1:8787 \
    --prefix=openstack- \
    --tag-from-label {version}-{release} \
    -e ${SERVICES}/neutron-sriov.yaml \
    --roles-file /home/stack/templates/roles_data.yaml \
    --output-env-file=/home/stack/templates/overcloud_images.yaml \
    --output-images-file=/home/stack/local_registry_images.yaml
    注記

    push-destination の IP アドレスは、前のステップで undercloud.conf 設定ファイルの local_ip パラメーターで設定したアドレスです。

    コンテナーイメージの準備に関する詳細な情報は、director のインストールと使用方法 を参照してください。

  3. KernelAgs および TunedProfile パラメーターを適用するには、/usr/share/openstack-tripleo-heat-templates/environments からの host-config-and-reboot.yaml ファイルをデプロイメントスクリプトに追加します。

    openstack overcloud deploy --templates \
    … \
    -e /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml \
    ...
  4. クラスターでの要求およびハードウェア設定に基づき、parameter_defaults セクションで SR-IOV ノードのパラメーターを設定します。これらの設定は、通常 network-environment.yaml ファイルに追加されます。

      NeutronNetworkType: 'vlan'
      NeutronNetworkVLANRanges:
        - tenant:22:22
        - tenant:25:25
      NeutronTunnelTypes: ''
  5. 同じファイルで、SR-IOV コンピュートノードのロール固有のパラメーターを設定します。

    注記

    ネットワーク設定テンプレートの numvfs 属性が優先されるため、NeutronSriovNumVFs パラメーターは間もなく非推奨になります。Red Hat では、デプロイ後の NeutronSriovNumVFs パラメーターおよび numvfs パラメーターの変更をサポートしません。動作中の環境でどちらのパラメーターを変更しても、PF の SR-IOV ポートを持つ実行中のインスタンスがすべて使用できなくなることが知られています。これらのインスタンスをハードリブートしない限り、インスタンスは SR-IOV PCI デバイスを認識しません。

      ComputeSriovParameters:
        IsolCpusList: "1-19,21-39"
        KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on isolcpus=1-19,21-39"
        TunedProfileName: "cpu-partitioning"
        NeutronBridgeMappings:
          - tenant:br-link0
        NeutronPhysicalDevMappings:
          - tenant:p7p1
          - tenant:p7p2
        NeutronSriovNumVFs:
          - p7p1:5
          - p7p2:5
        NovaPCIPassthrough:
          - vendor_id: "8086"
            product_id: "1528"
            address: "0000:06:00.0"
            physical_network: "tenant"
          - vendor_id: "8086"
            product_id: "1528"
            address: "0000:06:00.1"
            physical_network: "tenant"
        NovaVcpuPinSet: '1-19,21-39'
        NovaReservedHostMemory: 4096
    注記

    NIC のデバイス名は変更される可能性があるため、PCI パススルーを設定する場合は devname パラメーターを使用しないでください。代わりに、vendor_idproduct_id の方が安定しているため使用するか、NIC の address を使用してください。NovaPCIPassthrough の設定方法の詳細は、NovaPCIPassthrough 設定のガイドライン を参照してください。

  6. compute.yaml ネットワーク設定テンプレートで、SR-IOV が有効なインターフェイスを設定します。SR-IOV Virtual Function (VF) を作成するためには、インターフェイスを必ずスタンドアロンの NIC として設定します。

                 - type: interface
                    name: p7p3
                    mtu: 9000
                    use_dhcp: false
                    defroute: false
                    nm_controlled: true
                    hotplug: true
    
                  - type: interface
                    name: p7p4
                    mtu: 9000
                    use_dhcp: false
                    defroute: false
                    nm_controlled: true
                    hotplug: true
  7. デフォルトフィルターの一覧に、値 AggregateInstanceExtraSpecsFilter が含まれる状態にします。

    NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
  8. オーバークラウドをデプロイします。
TEMPLATES_HOME="/usr/share/openstack-tripleo-heat-templates"
CUSTOM_TEMPLATES="/home/stack/templates"

openstack overcloud deploy --templates \
  -r ${CUSTOM_TEMPLATES}/roles_data.yaml \
  -e ${TEMPLATES_HOME}/environments/host-config-and-reboot.yaml \
  -e ${TEMPLATES_HOME}/environments/services/neutron-sriov.yaml \
  -e ${CUSTOM_TEMPLATES}/network-environment.yaml