dpdk環境の話

39
DPDK実験環境を 組んでみた話 Dec 29, 2013 Masaru OKI (@masaru0714)

Upload: masaru-oki

Post on 24-Jan-2015

546 views

Category:

Technology


2 download

DESCRIPTION

About my DPDK running envonment. (In Japanese)

TRANSCRIPT

Page 1: Dpdk環境の話

DPDK実験環境を組んでみた話

Dec 29, 2013Masaru OKI (@masaru0714)

Page 2: Dpdk環境の話

Intel DPDKすごい!● Data Plane Development Kit● Linux用パケット処理ソフトウェアライブラリ● 10GbE short packetでwire rate出る (Xeonで)● packetはkernelをすっとばしてuserlandで処理● BSDライセンスで配布されている

もうなにも怖くない!

Page 3: Dpdk環境の話

自宅でいじくりまわしてみたい

でも

● DPDKはIntel NICじゃないと動かない○ 3rd partyのドライバ(6WINDとか)は有償だったりして

● VMware上じゃ面白くない

だったら、

新しく組むしかないじゃない!あなたも! わたしも!

Page 4: Dpdk環境の話

気になるあの製品

Atom C2758● サーバー向け8コア Atom (Rangeley) SoC● Intel QAT (Quick Assist Technology)搭載● ファンレス可能、TDP20Wこいつを載せたマザーボードが秋葉原にある!

SUPERMICRO A1SRi-2758F-O 51,680円

Page 5: Dpdk環境の話

A1SRi-2758F-Oすごい!● Mini-ITX form factor, fanless● オンボード 4x Intel GbE● SO-DIMMスロット4本、最大32GB (DDR3L)● シリアルポートあり、BIOSリダイレクト可能● IPMI搭載

お小遣いを握り締めて秋葉原へGO!

Page 6: Dpdk環境の話

買おうとしてみた

● Intel NUCと同じくDDR3Lじゃないとだめらしい● DDR3L SO-DIMMを安いところで買ってみる● そしていざ、パソコンハウス東映へ!● 「このマザーボードいただけますか」

ECC必須(買ったメモリ使えない orz)メモリの在庫が切れていた orz

Page 7: Dpdk環境の話

結果

● いったん購入回避。● 買い損ねて、微妙な気分でアキバをうろうろ。● Miix 2.8 64GBモデル在庫あり……だと……

Miix 2.8買いました(46,800円)lenovoの8インチWindows8.1タブレット

DPDKまったく関係なし。提督

Page 8: Dpdk環境の話

もとい、結果

● 翌週、入荷したメモリと一緒に買いました。● SSDも別途購入。● ビデオはオンボードだし、なくてもいい。● 円盤系はあまってるのを一時的につける。

ここからが本番です

Page 9: Dpdk環境の話

IPMIViewすごい!● SUPREMICROのサイトから拾える管理ソフト● Javaで書かれていてWin,Mac,Linuxで動く● マザボのIPMI用RJ45をLANにつないで制御● 電源ON/OFF、リセット、温度監視もできる● ビデオコンソールをLANにリダイレクトできる

もうなにも怖くない!! (7枚ぶり2回目)

Page 10: Dpdk環境の話

IPMIView動作画面の例

● センサー画面。● 1分で自動更新。● 手動更新可。

電圧センサ

温度センサ

Page 11: Dpdk環境の話

組み立てて起動

● メモリ挿して、電源つなぎ、IPMI LANつなぎ● お試しでNetBSD入りUSBメモリぶっ挿して● これだけでいいのかな?● IPMIViewから電源オン

起動した!

Page 12: Dpdk環境の話

起動したけど

Page 13: Dpdk環境の話

NetBSDはどうだったのか

● ddbに落としてdmesgを確認したところ● 起動したストレージが見えてない● ブートできなかったのは当たり前か● SATA SSDに入れれば動きそうな気配

とりあえずNetBSDはあとまわし。

Page 14: Dpdk環境の話

あらためて、組み立てと起動

● 電源を切って、SSDをつなぐ。● デスクトップ用DVDドライブをつなぐ。● 電源オンしてF2でブートデバイス調整して。● CentOSはいろいろ面倒なのでUbuntuで。● Ubuntu 12.04 LTSのメディアをブートさせて。

Ethernetが見えないとか不気味なメッセージ。

Page 15: Dpdk環境の話

Ubuntu 13.10を使う

● 調べる時間を惜しんで、最新バージョンを使う。● あっさり起動。あっさりインストール完了。● Ubuntu 13.10、日本語入力腐ってるとか?

○ 日本語入力することはないだろうし、いいや。

● IPMIViewがASCIIキーボード前提らしい。○ 中カッコやバッククオートの入力でハマる。

JISキーボードの人は気をつけましょう。

Page 16: Dpdk環境の話

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の選択

Page 17: Dpdk環境の話

hugepages?● 仮想記憶はページ単位で管理。1ページ4KB。● 割当なしのアドレスにアクセスすると例外発生。● 例外処理の中でページを割り当て処理続行。● これをオンデマンドページングという。

hugepagesは2MB/pageや1GB/pageオンデマンドページングの回数を減らし速度向上

Page 18: Dpdk環境の話

hugepagesの設定

● DPDKで使う前に、下準備の設定が必要● カーネルでサポートしていること

○ Ubuntuは標準カーネルでサポート、作業不要

● 起動前に領域が予約されていること○ GRUBの設定を編集して起動パラメータを追加

編集したら再起動が必要。

Page 19: Dpdk環境の話

GRUBでhugepages領域予約

● /etc/default/grubをテキストエディタで編集GRUB_CMDLINE_LINUX=”hugepages=1024”上記は「2MBページを1024ページ予約」

● 編集後 sudo update-grub を実行し再起動。● あらためてDPDKのsetup.shで7を選び1024。

○ 2socketのときは7じゃなく8を選ぶ。

DPDK利用準備完了!

Page 20: Dpdk環境の話

DPDKサンプルアプリいろいろ

examplesにいろいろ置いてあります

● l2fwd: L2転送のサンプル● l3fwd: L3転送のサンプル(arpはstatic)● load_balancer: 負荷分散のサンプル

などなど。さて、どれを試すかな。

あっ。

相手(対向)がいない!

Page 21: Dpdk環境の話

対向マシンを考える

● さすがに同じのもう一枚はちょっとなあ。● トラフィックジェネレータ的に使えるのを想定。● Dual GbE、小さくまとめたいのでMini-ITXで。● 候補

○ N70E-DR V2 16,680円○ GA-C1037UN-EU 10,980円くらい

ケースも買うぜ!

Page 22: Dpdk環境の話

製品の選択

● GIGABYTE安いしDIMMのほうがいいかな。● CPUのスペック一段下げたら1万円切るしな。● と思ったらオンボードNICがRealtek……● DPDK動かしたいのでN70E-DR V2に決定。

危うくまた散財するところだった。

Page 23: Dpdk環境の話

N70E-DR V2● オンボード Celeron 1037U

○ IvyBridge 1.8GHz, 2コア, GPU内蔵

● SO-DIMMスロット1本○ Atom板で使えなかったメモリの再利用

● Intel 82574 Gigabit Ethernet Controller x2● 元々はNAS用の板らしい

Atom板を買った翌日、東映さんで買いました。

Page 24: Dpdk環境の話

その他買ったもの

● Mini-ITXケース○ IN WIN BQ656

● 8インチサイズ液晶モニター○ CENTURY LCD-8000VH

● Low Profile PCIeなIntel NIC● 爪の折れないLANケーブルを数本

USBキーボードはあるし、マウスもあるはず。

Page 25: Dpdk環境の話

対向機の組み立て

● 紙の説明書が説明少なくて悩む。● ケースがスリムすぎてNICささらない(誤算)。

○ ひとまずあきらめ。NIC散財か……orz● ケースのSATA電源コネクタ1つ。

○ 臨時でつなぐDVDドライブの電源どうしよう。○ 過去散財した、USB接続DVDドライブを発掘して接続。

結果オーライ。散財は未来につながった!

Page 26: Dpdk環境の話

OS入れて、DPDK入れて

● 最初からUbuntu 13.10を入れる。○ sshdは sudo apt-get install openssh-server

● DPDKも入れる。hugepagesも設定して。● Pktgen-DPDKも入れる。

○ Atom機にも入れるか。○ Atom機で2ポートを直接つなげば限界速度わかる?○ ってことはつまり

対向機の出番はまだよ! orz

Page 27: Dpdk環境の話

とりあえずAtom機でPktgen● DPDKからは0~2の3ポートが見える。● Port0とPort1を結線してみた。

IPMI用LAN

通信用eth0

Port0

Port1

Page 28: Dpdk環境の話

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を使う

Page 29: Dpdk環境の話

Atom機でPktgen結果

● start 0あるいはstart 0,1を実行● リアルタイム表示の結果

測定種別Port0 Port1 Total

送信 受信 送信 受信 送信 受信

P0→P1単方向

1000Mbps1488200pps

- - 976Mbps1452641pps

1000Mbps1488200pps

976Mbps1452641pps

P0←→P1両方向

1000Mbps1488203pps

955Mbps1422553pps

1000Mbps1488203pps

972Mbps1447173pps

2000Mbps2976406pps

1928Mbps2869726pps

Page 30: Dpdk環境の話

パラメータを変えて試してみる

● -m ’[1-3:4-6].[0-2:0-2]’● Core7を使わない設定

測定種別Port0 Port1 Total

送信 受信 送信 受信 送信 受信

P0→P1単方向

900Mbps1340008pps

- - 857Mbps1275961pps

900Mbps1340008pps

857Mbps1275961pps

P0←→P1両方向

900Mbps1340005pps

872Mbps1298955pps

900Mbps1340003pps

868Mbps1292383pps

1800Mbps2680008pps

1741Mbps2591338pps

Page 31: Dpdk環境の話

パラメータを変える その2● -m ’1.[0-2]’ Core1だけで送受信すべて処理● 結果: ぴったり99Mbpsで頭打ち(なぜ!?)● Pktgenのバグか? 性能限界か?

測定種別Port0 Port1 Total

送信 受信 送信 受信 送信 受信

P0→P1単方向

99Mbps148768pps

- - 99Mbps148784pps

99Mbps148768pps

99Mbps148784pps

P0←→P1両方向

99Mbps148784pps

99Mbps148784pps

99Mbps148784pps

99Mbps148784pps

199Mbps297568pps

199Mbps297568pps

Page 32: Dpdk環境の話

対向用Celeron機で試してみた

● Celeron機はDual Core。● Core0は制御用としてキープする必要がある。● よって転送にはCore1のみを使う。● いやな予感。● 結果

100Mbpsしか出ませんでしたぁっ!!

Page 33: Dpdk環境の話

どうしてくれよう

このままではAtom機をいじめられない。

とりうる選択肢を考えてみた。

1. Pktgen 100Mbps頭打ちの謎を解く。2. 自分で送受信プログラムを書く。(同じかも)3. netmap, PF_RINGなど別実装を試す。4. 違うハードを用意する。(散財)5. いじめかっこ悪い。やめる。(完全敗北)

Page 34: Dpdk環境の話

まとめ

● サーバー用マザーボードとIPMIViewすごい。● AtomでGbE wire rateをほぼ出せた。● Pktgenは若干怪しい。(たまにバグでこけるし)● Celeron機は、散財に終わる可能性が……

それはさておき、

DPDKいじり楽しいですー!(コード書けよ)

Page 35: Dpdk環境の話

謝辞

● 本当いろいろ置いてくださっているパソコンハウス東映さんに感謝!

● マザボの在庫状況を電話してくれた@gussunoyoyoさんに感謝!

● だらだらと書いたスライドを読んでいただいた皆様にも感謝!

ありがとうございました!

Page 36: Dpdk環境の話

おまけ: Etherを増やす

● Celeron機はDual GbE。● 両方をDPDKで使うと通常の通信ができない。● 買ってきたケースに入れるとNICがささらない。● でも大きいケースはいやだー。● あ。

ライザーカードみたく横向きにできれば!

Page 37: Dpdk環境の話

おまけ: Etherを増やす 2買ってきた。

またしても東映さんにて。

Page 38: Dpdk環境の話

おまけ: Etherを増やす 3● 無理やり押し込んでみた。● バックパネルはなしで。● ケースの蓋は無事閉まった。● Ubuntuでeth2として認識。

結果: 勝利!

Page 39: Dpdk環境の話

おしまい。