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?

More than 5 years have passed since last update.

Oracle Cloud で DPDKをインストールしてみた

Last updated at Posted at 2018-07-09

■インストール環境

 DPDK : 17.11.2
 OS:CentOS Linux release 7.5.1804
 OCI Shape : VM2.1

■Cent OS インスタンス確認

●OS情報

[root@vm01 ~]# uname -a
    Linux vm01 3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@vm01 ~]# cat /etc/redhat-release
    CentOS Linux release 7.5.1804 (Core)

●NICドライバー確認

[root@vm01 ~]# lspci
  ・・・
    00:03.0 Ethernet controller: Broadcom Limited NetXtreme-E Ethernet Virtual Function
    00:04.0 Ethernet controller: Broadcom Limited NetXtreme-E Ethernet Virtual Function

■OCI設定

①DPDK用VNIC追加
・OCIコンソールからAttached VNICs画面にてDPDK用VNICを追加

1_VNIC追加(加工).png

②DPDK依存RPMをInstall

[root@vm01 ~]# yum install -y gcc  gcc-c++  kernel-devel 
    Loaded plugins: security, ulninfo
    Setting up Install Process
    ol6_UEKR4                                                | 2.5 kB     00:00
  ・・・
    Installed:
      gcc-c++.x86_64 0:4.4.7-23.0.1.el6       kernel.x86_64 0:2.6.32-754.el6
      kernel-devel.x86_64 0:2.6.32-754.el6    numactl-devel.x86_64 0:2.0.9-2.el6

    Dependency Installed:
      libstdc++-devel.x86_64 0:4.4.7-23.0.1.el6

    Dependency Updated:
      libstdc++.x86_64 0:4.4.7-23.0.1.el6

    Complete!

③/etc/default/grub 設定
・ /etc/default/grubのGRUB_CMDLINE_LINUX項に以下2つのパラメータを追加
 intel_iommu=on
 iommu=pt

[root@vm01 ~]# cp -p /etc/default/grub /etc/default/grub.org
[root@vm01 ~]# vi /etc/default/grub
    GRUB_CMDLINE_LINUX="crashkernel=auto LANG=en_US.UTF-8 transparent_hugepage=never console=tty0 console=ttyS0,9600 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi iscsi_param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0 libiscsi.debug_libiscsi_eh=1 network-config=e2NvbmZpZzogZGlzYWJsZWR9Cg== intel_iommu=on iommu=pt"

・grub.cfg ファイルの再構築

[root@vm01 ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

④grub設定のため再起動

[root@vm01 ~]# reboot

■DPDKダウンロード

[root@vm01 ~]# wget https://fast.dpdk.org/rel/dpdk-17.11.2.tar.xz

■DPDK インストール事前準備

・tarファイル解凍

[root@vm01 ~]# ls
    dpdk-17.11.2.tar.xz
[root@vm01 ~]# tar xJf dpdk-17.11.2.tar.xz

・Change make option

[root@vm01 ~]# cd /home/opc/dpdk-stable-17.11.2/config
[root@vm01 config]# cp common_linuxapp common_linuxapp.org
[root@vm01 config]# vi common_linuxapp
        CONFIG_RTE_KNI_KMOD=y
        CONFIG_RTE_LIBRTE_KNI=y 
        CONFIG_RTE_LIBRTE_PMD_KNI=y

    ==>上記を以下のように変更
        CONFIG_RTE_KNI_KMOD=n
        CONFIG_RTE_LIBRTE_KNI=n 
        CONFIG_RTE_LIBRTE_PMD_KNI=n

[root@vm01 config]# cat common_linuxapp | grep =n
    CONFIG_RTE_KNI_KMOD=n
    CONFIG_RTE_LIBRTE_KNI=n
    CONFIG_RTE_LIBRTE_PMD_KNI=n

■DPDK インストール

[root@vm01 ~]# cd /home/opc/dpdk-stable-17.11.2/usertools
[root@vm01 usertools]# ls
    cpu_layout.py  dpdk-devbind.py  dpdk-pmdinfo.py  dpdk-setup.sh
[root@vm01 usertools]# ./dpdk-setup.sh
        ------------------------------------------------------------------------------
         RTE_SDK exported as /home/opc/dpdk-stable-17.11.2
        ------------------------------------------------------------------------------
        ----------------------------------------------------------
         Step 1: Select the DPDK environment to build
        ----------------------------------------------------------
        [1] arm64-armv8a-linuxapp-clang
        [2] arm64-armv8a-linuxapp-gcc
        [3] arm64-dpaa2-linuxapp-gcc
        [4] arm64-dpaa-linuxapp-gcc
        [5] arm64-thunderx-linuxapp-gcc
        [6] arm64-xgene1-linuxapp-gcc
        [7] arm-armv7a-linuxapp-gcc
        [8] i686-native-linuxapp-gcc
        [9] i686-native-linuxapp-icc
        [10] ppc_64-power8-linuxapp-gcc
        [11] x86_64-native-bsdapp-clang
        [12] x86_64-native-bsdapp-gcc
        [13] x86_64-native-linuxapp-clang
        [14] x86_64-native-linuxapp-gcc
        [15] x86_64-native-linuxapp-icc
        [16] x86_x32-native-linuxapp-gcc

        ----------------------------------------------------------
         Step 2: Setup linuxapp environment
        ----------------------------------------------------------
        [17] Insert IGB UIO module
        [18] Insert VFIO module
        [19] Insert KNI module
        [20] Setup hugepage mappings for non-NUMA systems
        [21] Setup hugepage mappings for NUMA systems
        [22] Display current Ethernet/Crypto device settings
        [23] Bind Ethernet/Crypto device to IGB UIO module
        [24] Bind Ethernet/Crypto device to VFIO module
        [25] Setup VFIO permissions

        ----------------------------------------------------------
         Step 3: Run test application for linuxapp environment
        ----------------------------------------------------------
        [26] Run test application ($RTE_TARGET/app/test)
        [27] Run testpmd application in interactive mode ($RTE_TARGET/app/testpmd)

        ----------------------------------------------------------
         Step 4: Other tools
        ----------------------------------------------------------
        [28] List hugepage info from /proc/meminfo

        ----------------------------------------------------------
         Step 5: Uninstall and system cleanup
        ----------------------------------------------------------
        [29] Unbind devices from IGB UIO or VFIO driver
        [30] Remove IGB UIO module
        [31] Remove VFIO module
        [32] Remove KNI module
        [33] Remove hugepage mappings

        [34] Exit Script

        Option:

dpdk-setup.shを実行すると上記のように [34] 個の設定項目が出力されるので、
以下番号を実行して設定していく

①[14]入力して実行:ソースコードを実行可能なライブラリにコンパイル

Option: 14

    Configuration done using x86_64-native-linuxapp-gcc
    == Build lib
    == Build lib/librte_compat
    ・・・
    Build complete [x86_64-native-linuxapp-gcc]
    Installation cannot run with T defined and DESTDIR undefined
    ------------------------------------------------------------------------------
     RTE_TARGET exported as x86_64-native-linuxapp-gcc
    ------------------------------------------------------------------------------

    Press enter to continue ...

②[17]実行後 [18]を実行して Driver Module をLoad

    Option: 17

        Unloading any existing DPDK UIO module
        Loading DPDK UIO module

        Press enter to continue ...

    ・・・

    Option: 18

        Unloading any existing VFIO module
        Loading VFIO module
        chmod /dev/vfio
        OK

        Press enter to continue ...

③[22]実行して現在のDPDK Driver の設定を確認
・初期状態では登録されていないので、「etwork devices using kernel driver」項から、DPDK-compatibleに設定するNetwork devices番号を確認

Option: 22

    Network devices using DPDK-compatible driver
    ============================================
    <none>

    Network devices using kernel driver
    ===================================
    0000:00:03.0 'NetXtreme-E Ethernet Virtual Function 16dc' if=ens3 drv=bnxt_en unused=igb_uio *Active*
    0000:00:04.0 'NetXtreme-E Ethernet Virtual Function 16dc' if=ens4 drv=bnxt_en unused=igb_uio
    ・・・

    ==> DPDK用に0000:00:04.0 番を追加していく

④[23]実行してDPDK Driver を設定
・[22]で確認した追加するNetwork devices番号を設定

Option: 23

    Network devices using DPDK-compatible driver
    ============================================
    <none>
    ・・・
    Enter PCI address of device to bind to IGB UIO driver: 0000:00:04.0
    OK

    Press enter to continue ...

⑤[22]実行してDPDK Driver設定確認

Option: 22

    Network devices using DPDK-compatible driver
    ============================================
    0000:00:04.0 'NetXtreme-E Ethernet Virtual Function 16dc' drv=igb_uio unused=bnxt_en

    Network devices using kernel driver
    ===================================
    0000:00:03.0 'NetXtreme-E Ethernet Virtual Function 16dc' if=ens3 drv=bnxt_en unused=igb_uio *Active*
    ・・・

⑥設定されたことを確認したら[34]実行して終了

Option: 34

 [root@vm01 usertools]#

■DPDK インストール確認

・testpmdツールでInterfaceテストを実施

[root@vm01 usertools]# cd /home/opc/dpdk-stable-17.11.2/x86_64-native-linuxapp-gcc/app
[root@vm01 app]# ls
    dpdk-pdump       dpdk-procinfo          dpdk-test-crypto-perf.map  testpmd
    dpdk-pdump.map   dpdk-procinfo.map      dpdk-test-eventdev         testpmd.map
    dpdk-pmdinfogen  dpdk-test-crypto-perf  dpdk-test-eventdev.map

[root@vm01 app]# testpmd -- -i
testpmd> 
testpmd> show port info all

        ********************* Infos for port 0  *********************
        MAC address: 00:00:17:00:83:79
        Driver name: net_bnxt
        Connect to socket: 0
        memory allocation on the socket: 0
        Link status: up
        Link speed: 25000 Mbps
        Link duplex: full-duplex
        MTU: 1500
        Allmulticast mode: disabled
        Maximum number of MAC addresses: 4
        Maximum number of MAC addresses of hash filtering: 0
        VLAN offload:
          strip on
          filter on
          qinq(extend) off
        Hash key size in bytes: 40
        Redirection table size: 1
        No flow type is supported.
        Max possible RX queues: 1
        Max possible number of RXDs per queue: 65535
        Min possible number of RXDs per queue: 0
        RXDs number alignment: 1
        Max possible TX queues: 1
        Max possible number of TXDs per queue: 65535
        Min possible number of TXDs per queue: 0
        TXDs number alignment: 1
        testpmd>

testpmd> show port stats all

      ######################## NIC statistics for port 0  ########################
      RX-packets: 0          RX-missed: 0          RX-bytes:  0
      RX-errors: 0
      RX-nombuf:  0
      TX-packets: 0          TX-errors: 0          TX-bytes:  0

      Throughput (since last show)
      Rx-pps:            0
      Tx-pps:            0
      ############################################################################
testpmd> quit

■参考

 ・DPDK.org: https://www.dpdk.org/

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?