5.4. DPDK インスタンス向けの追加準備作業

NUMA、CPU ピニング、または DPDK を使用するインスタンスを移行する場合は、移行先ノードの準備を行う必要があります。

手順

  1. NUMA、CPU ピニング、または DPDK インスタンスの移行先コンピュートノードが無効ではない場合には、これを無効にしてスケジューラーがそのノードにインスタンスを割り当てるのを防ぎます。

    (overcloud) $ openstack compute service set <dest> nova-compute --disable

    <dest> を移行先コンピュートノードの名前または ID に置き換えてください。

  2. 複数の DPDK または NUMA インスタンスを移行する場合、移行元コンピュートノードから先に移行していたインスタンスを除き、移行先コンピュートノードにはインスタンスが存在しないようにしてください。

    (overcloud) $ openstack server list --host <dest> --all-projects

    <dest> を移行先コンピュートノードの名前または ID に置き換えてください。

  3. 移行先コンピュートノードに、NUMA、CPU ピニング、または DPDK インスタンスを実行するのに十分なリソースを確保するようにしてください。

    (overcloud) $ openstack host show <dest>
    $ ssh <dest>
    $ numactl --hardware
    $ exit

    <dest> を移行先コンピュートノードの名前または ID に置き換えてください。

  4. 移行元または移行先コンピュートノードの NUMA 情報を検出するには、以下のコマンドを実行します。

    $ ssh root@overcloud-compute-n
    # lscpu && lscpu | grep NUMA
    # virsh nodeinfo
    # virsh capabilities
    # exit

    ssh を使用して、overcloud-compute-n に接続します。ここで、overcloud-compute-n は移行元または移行先コンピュートノードです。

  5. インスタンスが NUMA を使用しているかどうか不明な場合は、インスタンスのフレーバーを確認してください。

    (overcloud) $ openstack server list -c Name -c Flavor --name <vm>
    (overcloud) $ openstack flavor show <flavor>
    • <vm> をインスタンスの名前または ID に置き換えてください。
    • <flavor> をフレーバーの名前または ID に置き換えてください。

      • 表示される properties フィールドの hw:mem_page_size の値が any 以外 (2MB2048、または 1GB) の場合、インスタンスは NUMA トポロジーを持ちます。
      • properties フィールドに aggregate_instance_extra_specs:pinned='true' が含まれる場合には、インスタンスは CPU ピニングを使用しています。
      • properties フィールドに hw:numa_nodes が含まれる場合、OpenStack Compute (nova) サービスはインスタンスを特定の NUMA ノードに制限します。
  6. NUMA を使用する各インスタンスについて、移行完了後に移行先コンピュートノードの NUMA トポロジーが移行元コンピュートノードの NUMA トポロジーを反映していることを確認できるように、ベースとなるコンピュートノードから NUMA トポロジーに関する情報を取得することができます。以下のコマンドを使用して、この確認を行うことができます。

    • NUMA および CPU ピニングに関する詳細を確認するには、以下のコマンドを実行します。

      $ ssh root@overcloud-compute-n
      # virsh vcpuinfo <vm>

      <vm> をインスタンスの名前に置き換えてください。

    • インスタンスがどの NUMA ノードを使用しているかの詳細を確認するには、以下のコマンドを実行します。

      $ ssh root@overcloud-compute-n
      # virsh numatune <vm>

      <vm> をインスタンスの名前に置き換えてください。