1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCIの最新NIC Acceleronを搭載したインスタンスでネットワークレイテンシの効果を調べる

1
Last updated at Posted at 2026-05-08

はじめに

この最新NICであるAcceleronの前段としてOCIのNICに関する特徴についておさらいしましょう。
OCIはリリース時の1つの特徴はオフボックス仮想化でした。

オフボックス仮想化は、通常はハイパーバイザー・ホスト上で行われるネットワーク/ストレージ仮想化とクラウド制御処理を、サーバーの外側にある専用ハードウェアであるCloud Control Computer(以後CCCと記載)で実行し、これによりベアメタルの自由度、VMのセキュリティ向上、ハイパーバイザーのオーバーヘッドを削減による性能向上を実現しました。

image.png

これが最新のNICであるAcceleronではオフボックスで構成されていたCCCの機能とホストNICを同一シリコン上に統合したConverged NIC/SmartNICで実現しました。

image.png

従来はNICとCCCの間に物理的なEthernet相当の接続があり、MAC/PHYなどの回路ブロックが必要でした。Acceleronでは、それを一つのNIC上で実現することで物理的なEthernetケーブル、PHY/MAC/SerDesを減らすことでデータパスが短くなり、レイテンシと電力消費を削減することができます。

本記事で確認したいこと

本記事ではこのレイテンシに注目してAcceleronでの効果を確認していきたいと思います。

利用するインスタンスは以下になります。これらを2インスタンス起動し、pingなどでレイテンシを確認していきたいと思います。
また、効果を見極めやすいように最低限のスペックである1コア構成としています。

Shape名 NICタイプ コア数 メモリ容量(GB) ネットワーク帯域(Gbps)
VM.Standard3.Flex 旧(Off-box仮想化) 1 16 1
VM.Standard4.Ax.Flex 新(Acceleron) 1 16 1

計測する上でのポイント

物理的に近い位置にインスタンスを配置

ネットワークのレイテンシを計測するので、Cluster Placement Groupを利用してデプロイされる両インスタンスが物理的に近い位置で配置されるようにします。

vNICタイプ

旧NICについてはvNICのタイプとして以下が選択可能なため両方で確認します。

  • PARAVIRTUALIZED (ハイパーバイザーを経由する準仮想化ネットワーク)
  • VFIO (SR-IOVで、NICのハードウェアレベルでの仮想化されたもの)

デフォルトではPARAVIRTUALIZEDが選択されますが、低レイテンシや高パケットレートを重視するワークロードでは、SR-IOV/VFIOの利用が適しています。一方で、PARAVIRTUALIZEDは汎用性や運用面の柔軟性に利点があります。

計測

ping

まずはシンプルにpingでのレイテンシを比較してみましょう。

image.png

計測の詳細 ### VM.Standard3.Flex

PV

60 packets transmitted, 60 received, 0% packet loss, time 60456ms
rtt min/avg/max/mdev = 0.194/0.255/0.362/0.041 ms

VFIO

60 packets transmitted, 60 received, 0% packet loss, time 60426ms
rtt min/avg/max/mdev = 0.145/0.173/0.249/0.020 ms

VM.Standard4.Ax.Flex

60 packets transmitted, 60 received, 0% packet loss, time 60436ms
rtt min/avg/max/mdev = 0.104/0.144/0.769/0.082 ms

pingpong

pingpong(IMB-MPI1 pingpong)は主にHPC領域でインスタンス間のレイテンシやスループットの計測で利用されるツールです。転送Byte sizeが0byteから4MBの範囲で計測されるので、どのような特性かを判断する上で有用なツールです。

これでスモールパケットでのレイテンシとスループットをみていきましょう。

レイテンシ

image.png

スループット

image.png

計測の詳細

VM.Standard3.Flex

PV

[opc@network-latency-vm-s3-01 ~]$   mpirun   --mca pml ucx   --mca osc ucx   --mca btl ^vader,tcp,openib,uct   -x UCX_TLS=tcp,self,sm   -x UCX_NET_DEVICES=ens3   --mca coll_hcoll_enable 0   -x HCOLL_ENABLE_MCAST_ALL=0   --use-hwthread-cpus   --bind-to hwthread   --map-by hwthread   --rank-by hwthread   --report-bindings   -np 2   -H 10.0.0.59:1,10.0.0.254:1   /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong
[network-latency-vm-s3-01:04221] MCW rank 0 bound to socket 0[core 0[hwt 0]]: [B.]
[network-latency-vm-s3-02:04275] MCW rank 1 bound to socket 0[core 0[hwt 0]]: [B.]
#------------------------------------------------------------
#    Intel (R) MPI Benchmarks 2018, MPI-1 part
#------------------------------------------------------------
# Date                  : Fri May  8 15:37:46 2026
# Machine               : x86_64
# System                : Linux
# Release               : 4.18.0-553.60.1.el8_10.x86_64
# Version               : #1 SMP Wed Jul 9 04:04:33 PDT 2025
# MPI Version           : 3.1
# MPI Thread Environment:


# Calling sequence was:

# /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong

# Minimum message length in bytes:   0
# Maximum message length in bytes:   4194304
#
# MPI_Datatype                   :   MPI_BYTE
# MPI_Datatype for reductions    :   MPI_FLOAT
# MPI_Op                         :   MPI_SUM
#
#

# List of Benchmarks to run:

# PingPong

#---------------------------------------------------
# Benchmarking PingPong
# #processes = 2
#---------------------------------------------------
       #bytes #repetitions      t[usec]   Mbytes/sec
            0         1000        31.91         0.00
            1         1000        30.15         0.03
            2         1000        30.36         0.07
            4         1000        29.93         0.13
            8         1000        30.41         0.26
           16         1000        29.91         0.53
           32         1000        30.09         1.06
           64         1000        30.02         2.13
          128         1000        30.73         4.17
          256         1000        30.96         8.27
          512         1000        36.54        14.01
         1024         1000        33.28        30.77
         2048         1000        33.45        61.23
         4096         1000        36.94       110.88
         8192         1000        54.82       149.44
        16384         1000        56.40       290.47
        32768         1000        78.77       416.01
        65536          640       147.94       442.99
       131072          320       252.07       519.98
       262144          160      1205.68       217.42
       524288           80      2636.29       198.87
      1048576           40      4147.95       252.79
      2097152           20      9541.63       219.79
      4194304           10     23170.99       181.02


# All processes entering MPI_Finalize

VFIO

[opc@network-latency-vm-s3-01 ~]$   mpirun \
>   --mca pml ucx \
>   --mca osc ucx \
>   --mca btl ^vader,tcp,openib,uct \
>   -x UCX_TLS=tcp,self,sm \
>   -x UCX_NET_DEVICES=ens3 \
>   --mca coll_hcoll_enable 0 \
>   -x HCOLL_ENABLE_MCAST_ALL=0 \
>   --use-hwthread-cpus \
>   --bind-to hwthread \
>   --map-by hwthread \
>   --rank-by hwthread \
>   --report-bindings \
>   -np 2 \
>   -H 10.0.0.59:1,10.0.0.254:1 \
>   /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong
[network-latency-vm-s3-01:05996] MCW rank 0 bound to socket 0[core 0[hwt 0]]: [B.]
[network-latency-vm-s3-02:06082] MCW rank 1 bound to socket 0[core 0[hwt 0]]: [B.]
#------------------------------------------------------------
#    Intel (R) MPI Benchmarks 2018, MPI-1 part
#------------------------------------------------------------
# Date                  : Fri May  8 15:33:19 2026
# Machine               : x86_64
# System                : Linux
# Release               : 4.18.0-553.60.1.el8_10.x86_64
# Version               : #1 SMP Wed Jul 9 04:04:33 PDT 2025
# MPI Version           : 3.1
# MPI Thread Environment:


# Calling sequence was:

# /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong

# Minimum message length in bytes:   0
# Maximum message length in bytes:   4194304
#
# MPI_Datatype                   :   MPI_BYTE
# MPI_Datatype for reductions    :   MPI_FLOAT
# MPI_Op                         :   MPI_SUM
#
#

# List of Benchmarks to run:

# PingPong

#---------------------------------------------------
# Benchmarking PingPong
# #processes = 2
#---------------------------------------------------
       #bytes #repetitions      t[usec]   Mbytes/sec
            0         1000        21.98         0.00
            1         1000        22.09         0.05
            2         1000        22.09         0.09
            4         1000        22.02         0.18
            8         1000        22.06         0.36
           16         1000        22.05         0.73
           32         1000        18.60         1.72
           64         1000        20.79         3.08
          128         1000        23.32         5.49
          256         1000        17.90        14.31
          512         1000        18.18        28.16
         1024         1000        21.67        47.25
         2048         1000        26.95        75.99
         4096         1000        42.19        97.08
         8192         1000        31.39       260.98
        16384         1000        37.55       436.36
        32768         1000        69.11       474.15
        65536          640       457.88       143.13
       131072          320       901.05       145.47
       262144          160      1149.46       228.06
       524288           80      3290.92       159.31
      1048576           40      4003.53       261.91
      2097152           20     18738.17       111.92
      4194304           10     25352.60       165.44


# All processes entering MPI_Finalize

VM.Standard4.Ax.Flex

[opc@network-latency-vm-s4-01 ~]$   mpirun \
>   --mca pml ucx \
>   --mca osc ucx \
>   --mca btl ^vader,tcp,openib,uct \
>   -x UCX_TLS=tcp,self,sm \
>   -x UCX_NET_DEVICES=enp0s5 \
>   --mca coll_hcoll_enable 0 \
>   -x HCOLL_ENABLE_MCAST_ALL=0 \
>   --use-hwthread-cpus \
>   --bind-to hwthread \
>   --map-by hwthread \
>   --rank-by hwthread \
>   --report-bindings \
>   -np 2 \
>   -H 10.0.0.50:1,10.0.0.175:1 \
>   /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong
[network-latency-vm-s4-01:06913] MCW rank 0 bound to socket 0[core 0[hwt 0]]: [B.]
[network-latency-vm-s4-02:06561] MCW rank 1 bound to socket 0[core 0[hwt 0]]: [B.]
#------------------------------------------------------------
#    Intel (R) MPI Benchmarks 2018, MPI-1 part
#------------------------------------------------------------
# Date                  : Wed May  6 03:27:36 2026
# Machine               : x86_64
# System                : Linux
# Release               : 4.18.0-553.60.1.el8_10.x86_64
# Version               : #1 SMP Wed Jul 9 04:04:33 PDT 2025
# MPI Version           : 3.1
# MPI Thread Environment:


# Calling sequence was:

# /usr/mpi/gcc/openmpi-4.1.7rc1/tests/imb/IMB-MPI1 pingpong

# Minimum message length in bytes:   0
# Maximum message length in bytes:   4194304
#
# MPI_Datatype                   :   MPI_BYTE
# MPI_Datatype for reductions    :   MPI_FLOAT
# MPI_Op                         :   MPI_SUM
#
#

# List of Benchmarks to run:

# PingPong

#---------------------------------------------------
# Benchmarking PingPong
# #processes = 2
#---------------------------------------------------
       #bytes #repetitions      t[usec]   Mbytes/sec
            0         1000        19.97         0.00
            1         1000        19.82         0.05
            2         1000        19.85         0.10
            4         1000        19.82         0.20
            8         1000        19.89         0.40
           16         1000        19.94         0.80
           32         1000        19.79         1.62
           64         1000        19.75         3.24
          128         1000        19.83         6.45
          256         1000        19.98        12.81
          512         1000        20.00        25.60
         1024         1000        20.33        50.37
         2048         1000        20.86        98.20
         4096         1000        21.76       188.26
         8192         1000        37.55       218.19
        16384         1000        29.99       546.36
        32768         1000        41.99       780.46
        65536          640       235.17       278.67
       131072          320       460.99       284.33
       262144          160       789.73       331.94
       524288           80      3005.39       174.45
      1048576           40      5485.85       191.14
      2097152           20     11031.05       190.11
      4194304           10     11590.27       361.88


# All processes entering MPI_Finalize

まとめ

OCIの最新NICであるAcceleronを採用したVM.Standard4.Ax.Flexと、従来世代のVM.Standard3.Flexを比較し、インスタンス間ネットワークレイテンシとpingpongの特性を確認しました。

pingでは、Acceleronが最も低い平均RTTを示しました。

pingpongでは、Acceleronは特に小〜中サイズのメッセージで低く安定したレイテンシを示し、1KB〜4KB、16KB〜32KBなど複数のサイズ帯で旧NIC構成を上回る結果となりました。スループットについても複数のサイズ帯で良好な結果が確認できました。

以上のことから特にネットワークのレイテンシという観点ではAcceleronの効果がみられたのではないかと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?