본문 바로가기

Infra

SR-IOV와 VF 개수 상관 관계

VM이나 추가 인터페이스를 쓸 수 있게 하는 NIC의 VF 기능을 사용하여 VF와 PF 간 속도 차이 비교

당연하게 PF가 잘나옴

실험 방법은 iperf3를 통해 ping 4개 씩 60초 동안 발생시켜 나온 속도의 평균 값을 구하여 비교

하나의 VM에서 여러 process를 띄우는 것은 아래 명령어로 실행

# 실행 시
iperf3 -s -p 5201 & iperf3 -s -p 5202 & iperf3 -s -p 5203 & iperf3 -s -p 5204

# 제거 시
# 종료해도 마지막 process만 종료되고 남은 process는 남아있음
# ps -ef 해서 pid 확인 후 삭제
kill -9 <pid>

 

Mellanox driver 설치

더보기
더보기
https://www.mellanox.com/page/mlnx_ofed_eula?mtag=linux_sw_drivers&mrequest=downloads&mtype=ofed&mver=MLNX_OFED-24.04-0.6.6.0&mname=MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu22.04-x86_64.tgz

tar -xvf MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu22.04-x86_64.tgz
cd MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu22.04-x86_64

apt-get install -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' libc6-dev flex libnl-3-dev graphviz libnl-route-3-200 libfuse2 gfortran pkg-config automake swig debhelper m4 chrpath quilt tk autoconf dkms autotools-dev gcc libltdl-dev libnl-route-3-dev make bison libgfortran5

./mlnxofedinstall
/etc/init.d/openibd restart

root@compute:/home/archiadmin/mellanox/MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu22.04-x86_64# ibdev2netdev
mlx5_0 port 1 ==> ens5f0np0 (Up)
mlx5_1 port 1 ==> ens5f1np1 (Down)
mlx5_2 port 1 ==> ens4f0np0 (Up)
mlx5_3 port 1 ==> ens4f1np1 (Down)

root@compute:/home/archiadmin/mellanox/MLNX_OFED_LINUX-24.04-0.6.6.0-ubuntu22.04-x86_64# mst status -vv
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module loaded
PCI devices:
------------
DEVICE_TYPE             MST                           PCI       RDMA            NET                                     NUMA
ConnectX5(rev:0)        /dev/mst/mt4119_pciconf1.1    b1:00.1   mlx5_3          net-ens4f1np1                           1

ConnectX5(rev:0)        /dev/mst/mt4119_pciconf1      b1:00.0   mlx5_2          net-ens4f0np0                           1

ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0.1    99:00.1   mlx5_1          net-ens5f1np1                           1

ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0      99:00.0   mlx5_0          net-ens5f0np0                           1

mlxconfig -d /dev/mst/mt4119_pciconf1 s SRIOV_EN=1 NUM_OF_VFS=64
mlxconfig -d /dev/mst/mt4119_pciconf0 s SRIOV_EN=1 NUM_OF_VFS=64

reboot

# Mellanox interface
# ens5f0np0 ens4f0np0

echo 2 > /sys/class/infiniband/mlx5_0/device/sriov_numvfs
echo 2 > /sys/class/infiniband/mlx5_2/device/sriov_numvfs

ip link show ens5f0np0
ip link show ens4f0np0

 

VF를 생성하는 명령어는 아래와 같음

echo 1 > /sys/class/infiniband/mlx5_0/device/sriov_numvfs

 

100G NIC, Mellanox NIC, VM은 Openstack으로 띄웠으며, libvirt, qemu로 구성, ubuntu 20.04

속도는 process 당 평균 속도의 합산

종류 총 갯수 실 사용 갯수 인터페이스 당 Process 갯수 자원 CPU/MEMORY 속도
PF 1 1 4 96/377 97G
VF 5 4 ( VM 4개 ) 1 ( VM 당 1 Process ) 16/32 * 4 30G
VF 5 1 ( VM 1개 ) 4 64/128 40G
VF 2 1 ( VM 1개 ) 4 64/128 72G
VF 1 1 ( VM 1개 ) 4 64/128 72G
VF 1 1 ( VM 1개 ) 5 64/128 85G
VF 1 1 ( VM 1개 ) 6 64/128 90G

 

VF는 사용하지 않더라도 많이 생성하면 속도에 부정적인 영향

최대한의 속도를 보고 싶다면 VF를 최소한으로 구성

'Infra' 카테고리의 다른 글

Zookeeper 불량문제  (0) 2024.07.11
Mellanox 설치  (0) 2024.05.25
Journal Log 용량 제한  (0) 2024.05.24
Squid proxy 폐쇄망 연결  (0) 2024.05.23
sFlow Dashboard  (0) 2024.05.23