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>
- これらの設定が意図したとおりに動作していることを確認してください。詳細は、Simple Compute Node CPU Partitioning and Memory Checks を参照してください。
完全に専用の CPU リソースをインスタンスに割り当てても、ネットワークパケット損失が発生する場合は、インスタンスが適切に調整され、DPDK が有効になっていることを確認してください。