Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EthernetやCPUなどの話

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 EthernetやCPUなどの話

EthernetやCPUなどのお話です

Avatar for Takanori Sejima

Takanori Sejima PRO

October 22, 2015
Tweet

More Decks by Takanori Sejima

Other Decks in Technology

Transcript

  1. 自己紹介 - そこそこ MySQL でご飯食べてます - ことし書いた資料 - いまの会社に入る前は、MMORPGのDB設計 などもしてまして

    - 一時期は Resource Monitoring や KVS にも 力入れてました - Linuxとハードウェアは嗜む程度 - disk I/O にはむかしから興味あります
  2. 先ず参考書籍 - 最近、今年の6月に和訳された 詳説 イーサネッ ト 第2版 を読んだんですが - すべてのインフラエンジニアやサーバサイドエン

    ジニアが、この書籍を読む必要性があるかとい うと、微妙 - MMORPGみたいに、ネットワークの要件が厳し いコンテンツ作る人は、読んでいいかも
  3. 先ず振り返ってみましょう - Ethernet はどれくらい進化 してきたのか? - 100Base-TX は 90年代、 GbE

    が普及してきた のは 21世紀に入ってきてからかな? - 2010年代、現代においては、 サーバでは 10GbE がだいぶ普及してきたという実感がある - 十年周期くらいの進歩と捉えたら、2020年代に は、やっぱ次の規格が普及するんじゃん?
  4. 今後は - 100GbE まではすでに製品がある - 流石に100GbEはツイストペアケーブルやらないらしい - 400GbE は2017年に仕様決まるらしい -

    40GbE はいまのところ光ファイバーのみだけ ど、 40GBASE-T を実現するための Category 8 Cable がいま作成中とのこと - (月並みだけど)Category 8 が来るころには、 40GbE の普及率上がってくるんじゃない?
  5. 40GBASE-Tが普及するのって - 10GBASE-T のときは、 2006 年に標準化完了 して、2009年にはアキバに出回り始めた - 実際にデータセンターで普及し始めたのは、 2010年に入ってからとしても

    - 40GBASE-Tが2016年くらいに標準化完了し て、もし同じペースで普及するとしたら、2020年 あたりから出回り始めるんじゃないかなぁ
  6. と、いうわけで - いま10GbE で動いてるところが、2020年代に は 4倍以上帯域が太くなってる可能性がありま す。いま GbE なら40倍以上です -

    40GbEはすでにある技術ですが、例によって、 Web業界のサーバには、他所である程度普及 した後、お下がりのようにやってくると思います - 40GBASE-T がWeb業界に来るのに備えて、 それを活かす準備をしたいものです
  7. それでも、むかしよりは良くなった - MSI-X 対応のNIC出たてのころ、個人的に、ま ともに動く気がしなかった - 最近だと動くようになってるから、技術の進歩マジすごい - むかしは disable_msi

    とか設定してたのに・・・ - 余談だけど、Windows は Vista の時点で MSI-X をデ フォルトで有効にしてたらしい。 Windows さすが。 - Receive Side Scaling (RSS)の存在も大きい - ただ、RSSはハードウェアの制限がある
  8. RSS意識するときは注意しよう - I350のデータシート P.45 の表を見てみると、 I350 はRSSのキューが 8 つまで、 82599

    は 16 まで。つまり、NICがサポートしてるキューの 数までしか、CPUのCore分散できない。 - また、 最近のXeonは選択肢が数多くあるの で、 Xeon E5-2637 v3 のようにクロック高いけ ど Core が少ないCPUでは、16個もキューが あっても使い切れない
  9. オンプレでNICの選定ってかなり重要 - むかし、出たてのNICは冗談抜きでストールす ることがあった - 数年前、私は諦念とともに disable_msi を設定した - どんなNICでもスループットは出せるかもしれな

    い。でも、ショートパケットを大量にさばけるか は、NICによって異なる。RSS対応してて欲しい - 用途を考えて評価し、最適なものを選択するこ とが重要
  10. では、 10GbE でどれくらいCPU使うのか - むかし同僚に教えてもらった uperf と - 次の組み合わせで試しました -

    Xeon E5-2630 v3 - 10GbE(Intel 82599) - 保守的にMTU1500で - Ubuntu 14.04.3 LTS - kernel 3.13 x86_64 - glibc 2.19 - gcc 4.8.4
  11. uperf で流した profile - https://gist.github. com/sejima/995be3859a4c3315f90a - 256 thread 起動して

    - 複数スレッド起動しないと、pps稼げないので - 各スレッドが、 300 秒ずつTCPで送受信する - 送受信するデータのサイズは 32/64/512/1000/2000byteのいずれかで、サイ ズごとに profile 書いてる
  12. CPU Scaling Governor など - scaling_governor は performance と ondemand

    で比較します - あと、 kernel の boot parameter でintel_idle. max_cstate=1
  13. scaling_governor=performance のときのけっか out/pps in/pps out/Gbps in/Gbps 32byte 1422117 1422087 1.11

    1.11 64byte 1456732 1456701 1.52 1.51 512byte 1177767 1177737 5.45 5.45 1000byte 1080842 1080812 9.22 9.22 2000byte 1626748 1626718 9.53 9.53
  14. scaling_governor=ondemand のときのけっか out/pps in/pps out/Gbps in/Gbps 32byte 717767 717736 0.562

    0.562 64byte 746036 746005 0.775 0.775 512byte 670079 670048 3.10 3.10 1000byte 629746 629716 5.37 5.37 2000byte 1031770 1031739 6.05 6.05
  15. さいきんは TurboBoostも重要 - clock 次第で NIC の性能引き出せないことも - scaling_governor=performance にして

    2.6GHz まで 引き上げた状態だと、 9.5Gbps までスループット出せて る。ほぼワイヤースピード - しかし、ondemand だと 6 Gbps 程度しか出なかったり する - このへんはワークロードに依存するところもあるだろうけ ど、NIC酷使したいなら TurboBoost 意識する方が無難
  16. まず TurboBoost の用途として - アプリケーションサーバなどCPUバウンドなもの でも TurboBoost 有効ですけど、それ以外では - 現時点では、ネットワークの性能改善に使うの

    がよさそう - RSS用にキューたくさんあるNICなら、どうせた くさんCore使うんだから、ぜんぶのCoreの clock を引き上げてしまえばいい
  17. ただ、気をつけてください - Brendan Gregg のスライド を見ると、彼は rdmsr で温度もとってますよね? - そうです、いまの

    TurboBoost は、温度次第な んです - CPUに温度センサーついてて、 TCase の範囲 内で clock 上げるのが、現在の TurboBoost 2.0 なんです
  18. なので TurboBoost 酷使したい人は - CPU の温度もモニタリングするのがオススメ - できれば常時観測しましょう - scaling_governor=performance

    にすると、 clock は上がりますが、C1 state (Halt)に入る と、温度下がります - C0 のときにだけ温度上がる == Core ぶん回っ てるときだけ温度上がるので、ちゃんと排熱でき てるか観測するのがよいです
  19. 閑話休題・2 - Skylake では SpeedShift っていう新しい省電 力機構が来るのですが - CPU側で自動制御するとか、OS側といろいろ 協調するとか、今までと比べてクロック/電圧制

    御が拡張されてるようなので - Xeon に SpeedShift が来たときに備えて、OS 側でクロックなど制御するのに、慣れといたほう がいいかなと思ってます
  20. 個人的に、10GbE以降は - GbEまでは、まだ良かったと思うけど - 10GbE 以降は、Jumbo Frame を標準化して ほしかった -

    最近の Linux はデフォルトで gro とか gso が 有効になってて、パケットまとめて処理してるん ですよ - なので、 tcpdump すると、(そのレイヤーでは) 1500 byte よりでかいパケット扱ってるのが見えるんですが
  21. 今のご時世 - 1500byte 超えるデータって、当たり前のように 扱うと思うんですよ - AWS の EBS 上で

    InnoDB 動かす場合、扱う データの単位はほとんど 16KB 以上なわけで すよ - それもあってか、最近の EC2 では Jumbo Frame デフォルトで有効なんですよね
  22. ただ、適材適所というか - Ethernet で扱うフレームが大きすぎると、 Ethernet の FCS は 4byte しかないので、エ

    ラーの検出率が下がってしまうと - よって、 Jumbo Frame 使うとしても、MTUはほ どほどにして、最終的には gro や gso などの機 能も組み合わせられる方が、効率よいのかなと 思います
  23. ブロックデバイスの進化はめざましい - Fusion-IO が ioDrive をリリースしてから「CPU がボトルネックになった」と言われましたが - 3D NAND

    が実用化されたので、 NAND flash のバイト単価はこれからも下がり続けます - PCI-e SSD はシーケンシャルリードが数 GB/secの時代に突入し、 3D Xpoint があれ ば、 NVMe のインターフェースのままで、 NAND Flash の 7 倍の性能が出るように
  24. 個人的な見解としては - 40GbE になったら、 Jumbo Frame 標準化され てないけど、使わないと活かせないかも - 何が遅いってDRAMが遅いから、サーバはそん

    なにたくさんのフレームを捌けない - 40GbEの時代になってもオンプレミス環境を持 つならば、そのへんを意識した方がいいかも - 一方、AWSはすでにMTU9001の世界に行って いる
  25. Omni-Path? - こちらの記事 などを参考に - 2014-2015年あたりからデータセンターに 40GbE が導入されるという予測はさておき - Omni-Path

    で、最初はHPC向けのインターコネ クトを InfiniBand から置き換えて、最終的に Ethernet も一部置き換えたいみたい - 10GBASE-T がしんどかったんですかねぇ
  26. というわけで、なんにせよ - 2020年代には、サーバに繋がるネットワークの 帯域は、 10GbE より太くなっていくんじゃない でしょうか - 40GBASE-T が流行るのか、

    100Gbps の Omni-Path が流行るかはまだわからないとして - InfiniBand 製品売ってる会社としても、シェアとられたく ないでしょうしね。そしたら競争原理働いて、各製品の低 価格化が進むんじゃないかなラッキー
  27. 40Gbps までは Ethernet だとしても - 私見ですが、そこから先は、別のものでも良い んじゃないでしょうか? - 少なくとも、データセンター内は -

    ブロックデバイスでHDDの代わりが見つかった ように - 少なくとも、ツイストペアケーブルだとエラーレー ト高くて効率悪いし、FCSが4byteだから、あまり 大きなフレームは扱いにくい
  28. 2020年あたりを想定すると - NAND Flash の次として、 (インターフェースが NVMeでも)7倍以上速い3D Xpoint が実用化 できそう

    - 10GBASE-Tの次として、4倍以上の帯域をもつ 40GBASE-Tか何かが実用化できそう - では、CPUやDRAMは4倍以上の進化をとげる ことができるのか?
  29. 閑話休題・4 - ついでに脱線すると、個人的に、この数年で x86 に追加された命令セットの中で、最も人類 に貢献したのは、 AES-NI だと思ってます - 暗号化の次に有用なのは、圧縮だと思うんです

    が、これはまだアルゴリズム発展途上なので、 最初はFPGAなどで最適化されるはず - 簡単にハードウェアアクセラレーション効くように なると良いなぁ。圧縮は、DBでも使うし
  30. いまでこそEC2で10Gbps普通だけど - かつて 10Gbps のインスタンスは HPC向け だった - いまでこそ普及して、 ここで挙げられてるような

    HPC以外の用途 でも活用されてるだろうけど - 40Gbps 以上のインターフェースが付けば、 EC2でHPCやる人が増えて、結果として、そう いうインスタンスが当たり前になるかもしれない