SlideShare a Scribd company logo
DPDK実験環境を
組んでみた話
Dec 29, 2013
Masaru OKI (@masaru0714)
Intel DPDKすごい!
● Data Plane Development Kit
● Linux用パケット処理ソフトウェアライブラリ
● 10GbE short packetでwire rate出る (Xeonで)
● packetはkernelをすっとばしてuserlandで処理
● BSDライセンスで配布されている
もうなにも怖くない!
自宅でいじくりまわしてみたい
でも
● DPDKはIntel NICじゃないと動かない
○ 3rd partyのドライバ(6WINDとか)は有償だったりして
● VMware上じゃ面白くない
だったら、
新しく組むしかないじゃない!
あなたも! わたしも!
気になるあの製品
Atom C2758
● サーバー向け8コア Atom (Rangeley) SoC
● Intel QAT (Quick Assist Technology)搭載
● ファンレス可能、TDP20W
こいつを載せたマザーボードが秋葉原にある!
SUPERMICRO A1SRi-2758F-O 51,680円
A1SRi-2758F-Oすごい!
● Mini-ITX form factor, fanless
● オンボード 4x Intel GbE
● SO-DIMMスロット4本、最大32GB (DDR3L)
● シリアルポートあり、BIOSリダイレクト可能
● IPMI搭載
お小遣いを握り締めて秋葉原へGO!
買おうとしてみた
● Intel NUCと同じくDDR3Lじゃないとだめらしい
● DDR3L SO-DIMMを安いところで買ってみる
● そしていざ、パソコンハウス東映へ!
● 「このマザーボードいただけますか」
ECC必須(買ったメモリ使えない orz)
メモリの在庫が切れていた orz
結果
● いったん購入回避。
● 買い損ねて、微妙な気分でアキバをうろうろ。
● Miix 2.8 64GBモデル在庫あり……だと……
Miix 2.8買いました(46,800円)
lenovoの8インチWindows8.1タブレット
DPDKまったく関係なし。提督
もとい、結果
● 翌週、入荷したメモリと一緒に買いました。
● SSDも別途購入。
● ビデオはオンボードだし、なくてもいい。
● 円盤系はあまってるのを一時的につける。
ここからが本番です
IPMIViewすごい!
● SUPREMICROのサイトから拾える管理ソフト
● Javaで書かれていてWin,Mac,Linuxで動く
● マザボのIPMI用RJ45をLANにつないで制御
● 電源ON/OFF、リセット、温度監視もできる
● ビデオコンソールをLANにリダイレクトできる
もうなにも怖くない!! (7枚ぶり2回目)
IPMIView動作画面の例
● センサー画面。
● 1分で自動更新。
● 手動更新可。
電圧センサ
温度センサ
組み立てて起動
● メモリ挿して、電源つなぎ、IPMI LANつなぎ
● お試しでNetBSD入りUSBメモリぶっ挿して
● これだけでいいのかな?
● IPMIViewから電源オン
起動した!
起動したけど
NetBSDはどうだったのか
● ddbに落としてdmesgを確認したところ
● 起動したストレージが見えてない
● ブートできなかったのは当たり前か
● SATA SSDに入れれば動きそうな気配
とりあえずNetBSDはあとまわし。
あらためて、組み立てと起動
● 電源を切って、SSDをつなぐ。
● デスクトップ用DVDドライブをつなぐ。
● 電源オンしてF2でブートデバイス調整して。
● CentOSはいろいろ面倒なのでUbuntuで。
● Ubuntu 12.04 LTSのメディアをブートさせて。
Ethernetが見えないとか不気味なメッセージ。
Ubuntu 13.10を使う
● 調べる時間を惜しんで、最新バージョンを使う。
● あっさり起動。あっさりインストール完了。
● Ubuntu 13.10、日本語入力腐ってるとか?
○ 日本語入力することはないだろうし、いいや。
● IPMIViewがASCIIキーボード前提らしい。
○ 中カッコやバッククオートの入力でハマる。
JISキーボードの人は気をつけましょう。
DPDK入れてみる
Intelのサイトから入手。unzipで展開。
cd DPDK-1.5.2; ./tools/setup でメニュー選択。
3. 64bit版をgccでコンパイル
5. PMD(DPDK用NICドライバ)の組み込み
6. KNI(DPDK用tapドライバ)の組み込み
7. hugepagesの確保
9. DPDKで使うNICの選択
hugepages?
● 仮想記憶はページ単位で管理。1ページ4KB。
● 割当なしのアドレスにアクセスすると例外発生。
● 例外処理の中でページを割り当て処理続行。
● これをオンデマンドページングという。
hugepagesは2MB/pageや1GB/page
オンデマンドページングの回数を減らし速度向上
hugepagesの設定
● DPDKで使う前に、下準備の設定が必要
● カーネルでサポートしていること
○ Ubuntuは標準カーネルでサポート、作業不要
● 起動前に領域が予約されていること
○ GRUBの設定を編集して起動パラメータを追加
編集したら再起動が必要。
GRUBでhugepages領域予約
● /etc/default/grubをテキストエディタで編集
GRUB_CMDLINE_LINUX=”hugepages=1024”
上記は「2MBページを1024ページ予約」
● 編集後 sudo update-grub を実行し再起動。
● あらためてDPDKのsetup.shで7を選び1024。
○ 2socketのときは7じゃなく8を選ぶ。
DPDK利用準備完了!
DPDKサンプルアプリいろいろ
examplesにいろいろ置いてあります
● l2fwd: L2転送のサンプル
● l3fwd: L3転送のサンプル(arpはstatic)
● load_balancer: 負荷分散のサンプル
などなど。さて、どれを試すかな。
あっ。
相手(対向)がいない!
対向マシンを考える
● さすがに同じのもう一枚はちょっとなあ。
● トラフィックジェネレータ的に使えるのを想定。
● Dual GbE、小さくまとめたいのでMini-ITXで。
● 候補
○ N70E-DR V2 16,680円
○ GA-C1037UN-EU 10,980円くらい
ケースも買うぜ!
製品の選択
● GIGABYTE安いしDIMMのほうがいいかな。
● CPUのスペック一段下げたら1万円切るしな。
● と思ったらオンボードNICがRealtek……
● DPDK動かしたいのでN70E-DR V2に決定。
危うくまた散財するところだった。
N70E-DR V2
● オンボード Celeron 1037U
○ IvyBridge 1.8GHz, 2コア, GPU内蔵
● SO-DIMMスロット1本
○ Atom板で使えなかったメモリの再利用
● Intel 82574 Gigabit Ethernet Controller x2
● 元々はNAS用の板らしい
Atom板を買った翌日、東映さんで買いました。
その他買ったもの
● Mini-ITXケース
○ IN WIN BQ656
● 8インチサイズ液晶モニター
○ CENTURY LCD-8000VH
● Low Profile PCIeなIntel NIC
● 爪の折れないLANケーブルを数本
USBキーボードはあるし、マウスもあるはず。
対向機の組み立て
● 紙の説明書が説明少なくて悩む。
● ケースがスリムすぎてNICささらない(誤算)。
○ ひとまずあきらめ。NIC散財か……orz
● ケースのSATA電源コネクタ1つ。
○ 臨時でつなぐDVDドライブの電源どうしよう。
○ 過去散財した、USB接続DVDドライブを発掘して接続。
結果オーライ。散財は未来につながった!
OS入れて、DPDK入れて
● 最初からUbuntu 13.10を入れる。
○ sshdは sudo apt-get install openssh-server
● DPDKも入れる。hugepagesも設定して。
● Pktgen-DPDKも入れる。
○ Atom機にも入れるか。
○ Atom機で2ポートを直接つなげば限界速度わかる?
○ ってことはつまり
対向機の出番はまだよ! orz
とりあえずAtom機でPktgen
● DPDKからは0~2の3ポートが見える。
● Port0とPort1を結線してみた。
IPMI用LAN
通信用eth0
Port0
Port1
Pktgen-DPDK動かし方
● sudo ./app/build/pktgen パラメータ
● パラメータ
○ -cff
■ Core0~7を使用する
○ -n2 -- -p 0xe
■ -pはPortを3つ(eth1~3)利用する指定
○ -m ’[1-3:4-7].[0-2:0-2]’
■ Port0~2受信にCore1~3を使う
■ Port0~2送信にCore4~7を使う
Atom機でPktgen結果
● start 0あるいはstart 0,1を実行
● リアルタイム表示の結果
測定種別
Port0 Port1 Total
送信 受信 送信 受信 送信 受信
P0→P1
単方向
1000Mbps
1488200pps
- - 976Mbps
1452641pps
1000Mbps
1488200pps
976Mbps
1452641pps
P0←→P1
両方向
1000Mbps
1488203pps
955Mbps
1422553pps
1000Mbps
1488203pps
972Mbps
1447173pps
2000Mbps
2976406pps
1928Mbps
2869726pps
パラメータを変えて試してみる
● -m ’[1-3:4-6].[0-2:0-2]’
● Core7を使わない設定
測定種別
Port0 Port1 Total
送信 受信 送信 受信 送信 受信
P0→P1
単方向
900Mbps
1340008pps
- - 857Mbps
1275961pps
900Mbps
1340008pps
857Mbps
1275961pps
P0←→P1
両方向
900Mbps
1340005pps
872Mbps
1298955pps
900Mbps
1340003pps
868Mbps
1292383pps
1800Mbps
2680008pps
1741Mbps
2591338pps
パラメータを変える その2
● -m ’1.[0-2]’ Core1だけで送受信すべて処理
● 結果: ぴったり99Mbpsで頭打ち(なぜ!?)
● Pktgenのバグか? 性能限界か?
測定種別
Port0 Port1 Total
送信 受信 送信 受信 送信 受信
P0→P1
単方向
99Mbps
148768pps
- - 99Mbps
148784pps
99Mbps
148768pps
99Mbps
148784pps
P0←→P1
両方向
99Mbps
148784pps
99Mbps
148784pps
99Mbps
148784pps
99Mbps
148784pps
199Mbps
297568pps
199Mbps
297568pps
対向用Celeron機で試してみた
● Celeron機はDual Core。
● Core0は制御用としてキープする必要がある。
● よって転送にはCore1のみを使う。
● いやな予感。
● 結果
100Mbpsしか出ませんでしたぁっ!!
どうしてくれよう
このままではAtom機をいじめられない。
とりうる選択肢を考えてみた。
1. Pktgen 100Mbps頭打ちの謎を解く。
2. 自分で送受信プログラムを書く。(同じかも)
3. netmap, PF_RINGなど別実装を試す。
4. 違うハードを用意する。(散財)
5. いじめかっこ悪い。やめる。(完全敗北)
まとめ
● サーバー用マザーボードとIPMIViewすごい。
● AtomでGbE wire rateをほぼ出せた。
● Pktgenは若干怪しい。(たまにバグでこけるし)
● Celeron機は、散財に終わる可能性が……
それはさておき、
DPDKいじり楽しいですー!(コード書けよ)
謝辞
● 本当いろいろ置いてくださっている
パソコンハウス東映さんに感謝!
● マザボの在庫状況を電話してくれた
@gussunoyoyoさんに感謝!
● だらだらと書いたスライドを読んでいただいた
皆様にも感謝!
ありがとうございました!
おまけ: Etherを増やす
● Celeron機はDual GbE。
● 両方をDPDKで使うと通常の通信ができない。
● 買ってきたケースに入れるとNICがささらない。
● でも大きいケースはいやだー。
● あ。
ライザーカードみたく横向きにできれば!
おまけ: Etherを増やす 2
買ってきた。
またしても東映さんにて。
おまけ: Etherを増やす 3
● 無理やり押し込んでみた。
● バックパネルはなしで。
● ケースの蓋は無事閉まった。
● Ubuntuでeth2として認識。
結果: 勝利!
おしまい。

More Related Content

PDF
自宅実験環境 Aug 2014
PDF
DPDKを拡張してみた話し
PDF
DPDK QoS
PDF
Dpdk pmd
PDF
Running lagopus on Xeon D
PDF
Lagos running on small factor machine
PDF
10GbE時代のネットワークI/O高速化
PDF
KVM環境におけるネットワーク速度ベンチマーク
自宅実験環境 Aug 2014
DPDKを拡張してみた話し
DPDK QoS
Dpdk pmd
Running lagopus on Xeon D
Lagos running on small factor machine
10GbE時代のネットワークI/O高速化
KVM環境におけるネットワーク速度ベンチマーク

What's hot (20)

PDF
Xeon d
PDF
Linux packet-forwarding
PDF
Interrupt Affinityについて
PDF
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
PDF
マルチコアとネットワークスタックの高速化技法
PDF
仮想化環境での利用者公平性
PDF
Rps・rfs等最新linux kernel事例
PDF
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
PDF
Lagopus + DockerのDPDK接続
PDF
Using Xeon D 10GBase-T
PPTX
Cloud next with Server Roadmap
PDF
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
PDF
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
PDF
openstack_neutron-ovs_osc2014tf_20141019
PPTX
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
PDF
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
PDF
僕のIntel nucが起動しないわけがない
PPTX
NUCで始めるVMware Tanzu
PPTX
今さら聞けない人のためのDocker超入門 - KOF
PDF
Apache cloudstack4.0インストール
Xeon d
Linux packet-forwarding
Interrupt Affinityについて
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
マルチコアとネットワークスタックの高速化技法
仮想化環境での利用者公平性
Rps・rfs等最新linux kernel事例
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
Lagopus + DockerのDPDK接続
Using Xeon D 10GBase-T
Cloud next with Server Roadmap
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
openstack_neutron-ovs_osc2014tf_20141019
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
僕のIntel nucが起動しないわけがない
NUCで始めるVMware Tanzu
今さら聞けない人のためのDocker超入門 - KOF
Apache cloudstack4.0インストール
Ad

More from Masaru Oki (20)

PDF
NetBSD移植の昔話
PDF
Rust-DPDK
PDF
Rust-DPDK
PDF
Lagopusとvagrant
PDF
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
PDF
Onieで遊んでみようとした話
PDF
GPD WINが来た!
PDF
新生Lagopus2017(仮称)
PDF
Lagopus as open flow hybrid switch 実践編
PDF
LagopusでPPPoEを使えるか考えてみた件
PDF
Lagopus どれだけ速いのか
PDF
Lagopus 0.2.7
PDF
Ryu+Lagopusで OpenFlowの動きを見てみよう
PDF
Lagopus match improvements
PDF
Lagopus 0.2.4
PDF
Open flow tunnel extension on lagopus vswitch
PDF
Lagopus as open flow hybrid switch
PDF
Net bsd advent calendar 2015 bpf
PDF
Using rump on NetBSD 7.0
NetBSD移植の昔話
Rust-DPDK
Rust-DPDK
Lagopusとvagrant
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
今よりも少し(?)昔、 Windowsを作ろうとした話
Onieで遊んでみようとした話
GPD WINが来た!
新生Lagopus2017(仮称)
Lagopus as open flow hybrid switch 実践編
LagopusでPPPoEを使えるか考えてみた件
Lagopus どれだけ速いのか
Lagopus 0.2.7
Ryu+Lagopusで OpenFlowの動きを見てみよう
Lagopus match improvements
Lagopus 0.2.4
Open flow tunnel extension on lagopus vswitch
Lagopus as open flow hybrid switch
Net bsd advent calendar 2015 bpf
Using rump on NetBSD 7.0
Ad

Dpdk環境の話