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 |