LoginSignup
0
0

More than 5 years have passed since last update.

DPDKのビルド・実行が出来るようになるまでのメモ

Last updated at Posted at 2018-04-27

環境

  • Intel(R) Xeon(R) CPU
  • Ubuntu 16.04 LTS
  • DPDL 17.11.2 LTS

手順

DPDKをダウンロード

cd ~
curl https://fast.dpdk.org/rel/dpdk-17.11.2.tar.xz | tar xJvf -

NUMAのライブラリをインストール

sudo apt install libnuma-dev

DPDKのセットアップツールを実行

cd dpdk-stable-17.11.2/usertools/
./dpdk-setup.sh

[14] x86_64-native-linuxapp-gccを選択
ビルドが走る

ビルド後,[34] Exit Scriptで抜ける

sudo mkdir -p /opt/dpdk/
sudo cp ~/dpdk-stable-17.11.2 /opt/dpdk

bashrcに環境変数を設定する

vim .bashrc

DPDKへのパスを通す

export RTE_SDK=/opt/dpdk/dpdk-stable-17.11.2/

サンプルプログラムのコンパイルができるか試す

cd ~/dpdk-stable-17.11.2/examples/helloworld
make

これでビルドが成功すればDPDKが使えるようになっている.

実行にはhugepageの設定が別途必要
ここでは一時的な方法を使う

sudo su -c "echo 20 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages"

サンプルプログラムを実行

sudo ./helloworld

実行結果

EAL: Detected 32 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:03:00.0 on NUMA socket 0
EAL:   probe driver: 8086:1528 net_ixgbe
EAL: PCI device 0000:03:00.1 on NUMA socket 0
EAL:   probe driver: 8086:1528 net_ixgbe
EAL: PCI device 0000:07:00.0 on NUMA socket 0
EAL:   probe driver: 8086:1521 net_e1000_igb
EAL: PCI device 0000:07:00.1 on NUMA socket 0
EAL:   probe driver: 8086:1521 net_e1000_igb
hello from core 1
hello from core 2
hello from core 3
hello from core 4
hello from core 5
hello from core 6
hello from core 7
hello from core 8
hello from core 9
hello from core 10
hello from core 11
hello from core 12
hello from core 13
hello from core 14
hello from core 15
hello from core 16
hello from core 17
hello from core 18
hello from core 19
hello from core 20
hello from core 21
hello from core 22
hello from core 23
hello from core 24
hello from core 25
hello from core 26
hello from core 27
hello from core 28
hello from core 29
hello from core 30
hello from core 31
hello from core 0

これで一通りDPDKが使えるようになった!
あとはhugepageを再起後も使えるようにgrub.cfgに設定すればOK

sudo vim /etc/default/grub

下記はデフォルトのhugepageを1Gに設定し,1Gを1つ確保する例

-GRUB_CMDLINE_LINUX=""
+GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=1"

こういった設定もできる
これは1Gを1,2Mを20確保する例

GRUB_CMDLINE_LINUX="default_hugepagesz=1G hugepagesz=1G hugepages=1 hugepagesz=2M hugepages=20"

設定後,下記のコマンドでgrubを反映して再起動

sudo update-grub
sudo reboot

下記のように,hugepage_totalが1になっていれば設定されている

 cat /proc/meminfo  | grep HugePage
AnonHugePages:         0 kB
HugePages_Total:       1
HugePages_Free:        1
HugePages_Rsvd:        0
HugePages_Surp:        0
0
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
0
0