5.3. 解決方法

VM に割り当てられた vCPU がゲストのタスクのみを処理していることを確認します。

  • クラスターが次のテンプレートパラメーターを使用してデプロイされたことを確認します。

    • IsolCpusList: スケジュール から CPU を削除します
    • NovaVcpuPinSet: ピニング用の CPU の割り当て
    • NovaComputeCpuSharedSet: エミュレータースレッド固定用に CPU を割り当てます。

例:

    parameter_defaults:
      ComputeOvsDpdkParameters:
        KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on isolcpus=2-19,22-39"
        IsolCpusList: "2-19,22-39"
        NovaVcpuPinSet: ['4-19,24-39']
        NovaReservedHostMemory: 4096
        OvsDpdkSocketMemory: "3072,1024"
        OvsDpdkMemoryChannels: "4"
        OvsDpdkCoreList: "0,20,1,21"
        OvsPmdCoreList: "2,22,3,23"
        NovaComputeCpuSharedSet: [0,20,1,21]
  • 固定された CPU とエミュレータープールセットを利用するフレーバーで VM がデプロイされていることを確認します。

例:

openstack flavor create --ram <size_mb> --disk <size_gb> -\
-vcpus <vcpus> --property dpdk=true \
--property hw:mem_page_size=1G \
--property hw:cpu_policy=dedicated \
--property hw:emulator_threads_policy=share <flavor>

完全に専用の CPU リソースをインスタンスに割り当てても、ネットワークパケット損失が発生する場合は、インスタンスが適切に調整され、DPDK が有効になっていることを確認してください。