Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DPDK実験環境を
組んでみた話
Dec 29, 2013
Masaru OKI (@masaru0714)
Intel DPDKすごい!
● Data Plane Development Kit
● Linux用パケット処理ソフトウェアライブラリ
● 10GbE short packetでwire rate出る (Xeonで)
● packetはke...
自宅でいじくりまわしてみたい
でも
● DPDKはIntel NICじゃないと動かない
○ 3rd partyのドライバ(6WINDとか)は有償だったりして
● VMware上じゃ面白くない
だったら、
新しく組むしかないじゃない!
あなたも!...
気になるあの製品
Atom C2758
● サーバー向け8コア Atom (Rangeley) SoC
● Intel QAT (Quick Assist Technology)搭載
● ファンレス可能、TDP20W
こいつを載せたマザーボード...
A1SRi-2758F-Oすごい!
● Mini-ITX form factor, fanless
● オンボード 4x Intel GbE
● SO-DIMMスロット4本、最大32GB (DDR3L)
● シリアルポートあり、BIOSリダイレ...
買おうとしてみた
● Intel NUCと同じくDDR3Lじゃないとだめらしい
● DDR3L SO-DIMMを安いところで買ってみる
● そしていざ、パソコンハウス東映へ!
● 「このマザーボードいただけますか」
ECC必須(買ったメモリ使え...
結果
● いったん購入回避。
● 買い損ねて、微妙な気分でアキバをうろうろ。
● 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、リセット、温度監視もできる
...
IPMIView動作画面の例
● センサー画面。
● 1分で自動更新。
● 手動更新可。
電圧センサ
温度センサ
組み立てて起動
● メモリ挿して、電源つなぎ、IPMI LANつなぎ
● お試しでNetBSD入りUSBメモリぶっ挿して
● これだけでいいのかな?
● IPMIViewから電源オン
起動した!
起動したけど
NetBSDはどうだったのか
● ddbに落としてdmesgを確認したところ
● 起動したストレージが見えてない
● ブートできなかったのは当たり前か
● SATA SSDに入れれば動きそうな気配
とりあえずNetBSDはあとまわし。
あらためて、組み立てと起動
● 電源を切って、SSDをつなぐ。
● デスクトップ用DVDドライブをつなぐ。
● 電源オンしてF2でブートデバイス調整して。
● CentOSはいろいろ面倒なのでUbuntuで。
● Ubuntu 12.04 LT...
Ubuntu 13.10を使う
● 調べる時間を惜しんで、最新バージョンを使う。
● あっさり起動。あっさりインストール完了。
● Ubuntu 13.10、日本語入力腐ってるとか?
○ 日本語入力することはないだろうし、いいや。
● IPMI...
DPDK入れてみる
Intelのサイトから入手。unzipで展開。
cd DPDK-1.5.2; ./tools/setup でメニュー選択。
3. 64bit版をgccでコンパイル
5. PMD(DPDK用NICドライバ)の組み込み
6. K...
hugepages?
● 仮想記憶はページ単位で管理。1ページ4KB。
● 割当なしのアドレスにアクセスすると例外発生。
● 例外処理の中でページを割り当て処理続行。
● これをオンデマンドページングという。
hugepagesは2MB/pag...
hugepagesの設定
● DPDKで使う前に、下準備の設定が必要
● カーネルでサポートしていること
○ Ubuntuは標準カーネルでサポート、作業不要
● 起動前に領域が予約されていること
○ GRUBの設定を編集して起動パラメータを追加...
GRUBでhugepages領域予約
● /etc/default/grubをテキストエディタで編集
GRUB_CMDLINE_LINUX=”hugepages=1024”
上記は「2MBページを1024ページ予約」
● 編集後 sudo up...
DPDKサンプルアプリいろいろ
examplesにいろいろ置いてあります
● l2fwd: L2転送のサンプル
● l3fwd: L3転送のサンプル(arpはstatic)
● load_balancer: 負荷分散のサンプル
などなど。さて、...
対向マシンを考える
● さすがに同じのもう一枚はちょっとなあ。
● トラフィックジェネレータ的に使えるのを想定。
● Dual GbE、小さくまとめたいのでMini-ITXで。
● 候補
○ N70E-DR V2 16,680円
○ GA-C1...
製品の選択
● 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 Gigabi...
その他買ったもの
● Mini-ITXケース
○ IN WIN BQ656
● 8インチサイズ液晶モニター
○ CENTURY LCD-8000VH
● Low Profile PCIeなIntel NIC
● 爪の折れないLANケーブルを数本...
対向機の組み立て
● 紙の説明書が説明少なくて悩む。
● ケースがスリムすぎてNICささらない(誤算)。
○ ひとまずあきらめ。NIC散財か……orz
● ケースのSATA電源コネクタ1つ。
○ 臨時でつなぐDVDドライブの電源どうしよう。
○...
OS入れて、DPDK入れて
● 最初からUbuntu 13.10を入れる。
○ sshdは sudo apt-get install openssh-server
● DPDKも入れる。hugepagesも設定して。
● Pktgen-DPDK...
とりあえず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)利用する指定
○...
Atom機でPktgen結果
● start 0あるいはstart 0,1を実行
● リアルタイム表示の結果
測定種別
Port0 Port1 Total
送信 受信 送信 受信 送信 受信
P0→P1
単方向
1000Mbps
1488200...
パラメータを変えて試してみる
● -m ’[1-3:4-6].[0-2:0-2]’
● Core7を使わない設定
測定種別
Port0 Port1 Total
送信 受信 送信 受信 送信 受信
P0→P1
単方向
900Mbps
134000...
パラメータを変える その2
● -m ’1.[0-2]’ Core1だけで送受信すべて処理
● 結果: ぴったり99Mbpsで頭打ち(なぜ!?)
● Pktgenのバグか? 性能限界か?
測定種別
Port0 Port1 Total
送信 受信...
対向用Celeron機で試してみた
● Celeron機はDual Core。
● Core0は制御用としてキープする必要がある。
● よって転送にはCore1のみを使う。
● いやな予感。
● 結果
100Mbpsしか出ませんでしたぁっ!!
どうしてくれよう
このままではAtom機をいじめられない。
とりうる選択肢を考えてみた。
1. Pktgen 100Mbps頭打ちの謎を解く。
2. 自分で送受信プログラムを書く。(同じかも)
3. netmap, PF_RINGなど別実装を試...
まとめ
● サーバー用マザーボードとIPMIViewすごい。
● AtomでGbE wire rateをほぼ出せた。
● Pktgenは若干怪しい。(たまにバグでこけるし)
● Celeron機は、散財に終わる可能性が……
それはさておき、
D...
謝辞
● 本当いろいろ置いてくださっている
パソコンハウス東映さんに感謝!
● マザボの在庫状況を電話してくれた
@gussunoyoyoさんに感謝!
● だらだらと書いたスライドを読んでいただいた
皆様にも感謝!
ありがとうございました!
おまけ: Etherを増やす
● Celeron機はDual GbE。
● 両方をDPDKで使うと通常の通信ができない。
● 買ってきたケースに入れるとNICがささらない。
● でも大きいケースはいやだー。
● あ。
ライザーカードみたく横向き...
おまけ: Etherを増やす 2
買ってきた。
またしても東映さんにて。
おまけ: Etherを増やす 3
● 無理やり押し込んでみた。
● バックパネルはなしで。
● ケースの蓋は無事閉まった。
● Ubuntuでeth2として認識。
結果: 勝利!
おしまい。
Upcoming SlideShare
Loading in …5
×

Dpdk環境の話

5,458 views

Published on

About my DPDK running envonment. (In Japanese)

Published in: Technology
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Dpdk環境の話

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

×