SR-IOV 기반 IO 가상화 기술

13388 단어

서버 구성 요구 사항

  • x86 서버 메모리는 32GB 이하여야 합니다
  • 서버 CPU는 가상화 및 장치 가상화 VT-x VT-d, SR-IOV 기능을 지원하고 BIOS에서 SR-IOV를 활성화해야 합니다
  • NIC 구성은 최소 기가비트 구성입니다
  • SR-IOV를 지원하는 네트워크 카드는 버스 대역폭 X8 이상의 확장 슬롯에 꽂아야 합니다

  • 기본 정의


    SR-IOV 기술 표준은 가상 기기 간에 PCIe(Peripheral Component Interconnect Express, 빠른 주변 장치 구성 요소 상호 연결) 장치를 효율적으로 공유할 수 있도록 하고 하드웨어에서 구현되어 본 기기의 성능에 필적할 수 있는 I/O 성능을 얻을 수 있다.SR-IOV 사양은 새 표준을 정의하고 이 표준에 따라 생성된 새 장치는 가상 머신을 입출력 장치에 직접 연결할 수 있도록 합니다.

    SRIOV의 기능 유형


    물리적 기능(Physical Function, PF)


    SR-IOV 기능을 지원하는 PCI 기능(예: SR-IOV 사양)에 정의되어 있습니다.PF에는 SR-IOV 기능을 관리하는 SR-IOV 기능 구조가 포함되어 있습니다.PF는 다른 PCIe 장치처럼 검색, 관리 및 처리할 수 있는 모든 기능을 갖춘 PCIe 기능입니다.PF는 PCIe 장치를 구성하거나 제어할 수 있는 전체 구성 리소스를 보유하고 있습니다.

    가상 기능(Virtual Function, VF)


    물리적 기능과 관련된 기능VF는 물리적 기능 및 동일한 물리적 기능과 연관된 다른 VF와 하나 이상의 물리적 리소스를 공유할 수 있는 경량급 PCIe 기능입니다.VF는 자체 비헤이비어를 위한 구성 리소스만 사용할 수 있습니다.

    기능 소개


    각 SR-IOV 장치에는 물리적 기능(Physical Function, PF)이 있으며 PF당 최대 64000개의 가상 기능(Virtual Function, VF)이 있습니다.PF는 레지스터를 통해 VF를 생성할 수 있습니다. 이 레지스터는 이 목적을 위한 속성을 설계합니다.PF에서 SR-IOV가 활성화되어 있으면 PF의 버스, 장치 및 기능 번호(라우팅 ID)를 통해 각 VF의 PCI 구성 공간에 액세스할 수 있습니다.각 VF에는 레지스터 세트를 매핑하는 PCI 메모리 공간이 있습니다.VF 장치 드라이버는 레지스터 세트의 기능을 활성화하고 실제 PCI 장치로 표시합니다.VF를 만들면 IO 게스트 도메인이나 개별 애플리케이션에 직접 지정할 수 있습니다.이 기능을 통해 가상 기능은 물리적 디바이스를 공유하고 CPU 및 Hypervisor 소프트웨어 오버헤드 없이 입출력을 수행할 수 있습니다.

    GPU SRIOV


    System Requirements


    Operating System Requirements


    Ubuntu 16.04. has been fully validated as host, other Linux operating system like Centos 7 are also OK.

    Hardware Requirements


    The device supports VT-d, and the physical graphics card supports SRIOV technology.

    Modify the BIOS


    we need reset bios to defaults,and enable VT-d and SRIOV function

    Kernel preparation


    In order to use the graphics cards and all its cores, we’ll have to recompile the Linux Kernel, modifying some values and applying some paches.

    Download kernel source

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    vi /etc/apt/sources.list

    # deb cdrom:[Ubuntu-Server 16.04.6 LTS _Xenial Xerus_ - Release amd64 (20190226)]/ xenial main restricted

    #deb cdrom:[Ubuntu-Server 16.04.6 LTS _Xenial Xerus_ - Release amd64 (20190226)]/ xenial main restricted

    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted

    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb http://us.archive.ubuntu.com/ubuntu/ xenial universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
    deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe

    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the sof   SR-IOV IO tware. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
    deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse

    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse

    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu xenial partner
    deb-src http://archive.canonical.com/ubuntu xenial partner

    deb http://security.ubuntu.com/ubuntu xenial-security main restricted
    deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
    deb http://security.ubuntu.com/ubuntu xenial-security universe
    deb-src http://security.ubuntu.com/ubuntu xenial-security universe
    deb http://security.ubuntu.com/ubuntu xenial-security multiverse
    deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

    apt update && apt upgrade -y

    apt install -y dpkg-devapt source linux-image-$(uname -r)

    Download gim modules


    git clone https://github.com/GPUOpen-LibrariesAndSDKs/MxGPU-Virtualization

    Patch the kernel


    The patch is located in the SRC_DIR/MxGPU-Virtualization/patch directory.
    1
    2
    3
    4
    5
    6
    cd linux-4.4.0 && make oldconfig && make menuconfig

    patch < ../MxGPU-Virtualization/patch/0001-Added-legacy-endpoint-type-to-sriov-for-ubuntu-4.4.0-75-generic.diff
    File to patch: ./drivers/pci/iov.c
    patch < ../MxGPU-Virtualization/patch/0002-add-pci-io-access-cap-for-ubuntu-4.4.0-75-generic.diff
    File to patch: ./drivers/vfio/pci/vfio_pci_config.c

    Kernel compilation


    make -j deb-pkg LOCALVERSION=-vm-firepro

    Kernel installation

    1
    2
    cd ..
    dpkg -i *.deb

    GRUB and BLACKLIST preparation


    GRUB

    1
    2
    3
    4
    5
    6
    7
    8
    vim /etc/default/grub
    ---
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
    ---
    Check if IOMMU is supported after rebooting the system.
    Command is as follows:
    dmesg | grep -e DMAR -e IOMMU
    You should be able to see something like the following:DMAR: IOMMU enabled

    Blacklist amdgpu and amdkfd


    adding the following line to the end of file
    1
    2
    3
    4
    5
    vi /etc/modprobe.d/blacklist.conf
    ---
    blacklist amdgpu
    blacklist amdkfd
    ---

    gim module compilation


    Compile gim module


    cd MxGPU-Virtualization && make && make install

    Use gim module

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    modprobe gim
    modprobe -r gim
    vi /etc/gim_config
    ----
    ...
    vf_num=16 # This is going to activate the 16 cores of the GPU
    ...
    ----
    modprobe gim
    dmesg # Finally, we need to check that the gim module has successfully been loaded, without errors
    lspci -vvv # We can now see that the FirePro S7150 has all the 16 cores activated

    좋은 웹페이지 즐겨찾기