SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webサービスのためのシステム・ベンチマーク入門

普及目前! 10Gigabit Ethernetの世界を知る

Webサービスのためのシステム・ベンチマーク入門(1)


トラフィック生成と確認方法

 10Gigabit Ethernetの性能を的確に把握するためには、まずトラフィック生成を行う手法を理解する必要があります。一般的なベンチマークツールとしては、iperfやnetparfなどがありますが、ここではLinuxに標準的に搭載されるIn-Kernerlでパケット生成が可能なpktgenを紹介します。

 動作はpktgenモジュールを最初に読み込んだ後、パケット生成を行いたいネットワーク・インターフェースに対して、生成したいパケット詳細を記述した上で実行します。今回は詳細な説明を割愛しますが、基本的にはパケット受信側のMACアドレスとIPアドレスを設定してから実行します。

# modprobe pktgen
# vi rungen
#!/bin/sh
echo "rem_device_all"            > /proc/net/pktgen/kpktgend_0
echo "add_device eth0"           > /proc/net/pktgen/kpktgend_0
echo "max_before_softirq 300000" > /proc/net/pktgen/kpktgend_0
echo "count 0"                   > /proc/net/pktgen/eth0
echo "clone_skb 1"               > /proc/net/pktgen/eth0
echo "pkt_size 64"               > /proc/net/pktgen/eth0
echo "delay 0"                   > /proc/net/pktgen/eth0
echo "dst 10.10.11.2"            > /proc/net/pktgen/eth0
echo "dst_mac 00:04:23:08:91:dc" > /proc/net/pktgen/eth0
echo "start"                     > /proc/net/pktgen/pgctrl
# chmod 700 rungen
# ./rungen

 パケット送受信を確認するツールとしては、リアルタイムで状況確認できるvnstatが最適です。

# wget http://humdi.net/vnstat/vnstat-1.11.tar.gz
# tar xzvf ./vnstat-1.11.tar.gz; cd vnstat-1.11; make; make install;
# vnstat -i eth0 -l
Monitoring eth0...    (press CTRL-C to stop)

   rx:        4 kbit/s     3 p/s          tx:     1.31 Gbit/s 2620103 p/s

 昨今のモバイル端末から接続されるようなWebサービスの場合、ネットワーク帯域と同じくらいパケット処理数(Packet/Sec)が重要となっています。この両方を一度に確認するには、vnstatが最適なツールと言えるでしょう。vnstatはCTRL-Cで停止することで、それまで観測していたパケット通信サマリーを吐き出してくれます。これもネットワーク性能を簡単に俯瞰する意味でも、とても便利な機能です。

# vnstat -i eth0 -l
Monitoring eth0...    (press CTRL-C to stop)

   rx:        0 kbit/s     1 p/s          tx:        0 kbit/s     0 p/s^C


 eth0  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------
  bytes                       13 KiB  |        3.03 GiB
--------------------------------------+------------------
          max               8 kbit/s  |     1.96 Gbit/s
      average            1.22 kbit/s  |   298.67 Mbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                        167  |        50773557
--------------------------------------+------------------
          max                 10 p/s  |     3922693 p/s
      average                  1 p/s  |      597335 p/s
          min                  0 p/s  |           0 p/s
--------------------------------------+------------------
  time                  1.42 minutes

パケット処理の限界性能 

 次にLinuxが抱えるパケット処理性能の限界について見ていきます。さきほど紹介したpktgenよりも強力なパケット生成ソフトウェアを用いることで、Webサービスする場合でのボトルネックも炙り出されてくることでしょう。ピサ大学のRizzo博士によって開発されたnetmap(a novel framework for fast packet I/O)と呼ばれるドライバを組み込んだOSイメージを使うことで、in-kernelで動作するpktgenよりも強力なパケット生成を行うことができるのです。

 まず、Rizzo博士のWebページからOSイメージをダウンロードし、Win32 Disk ImagerなどでUSBメモリに書き込みます。独自ドライバを組み込んだOSイメージは、特定Gigabit Ethenetのみ対応していますので、動作確認を行う際には注意が必要です。

 動作方法は至って簡単で、pkt-genコマンドを用いてパケット受信側のMACアドレスとIPアドレスを記述するだけです。

# pkt-gen -i ix0 -f tx -l 64 -d 10.10.11.2 -D 00:04:23:08:91:dc
main [1042] map size is 207712 Kb
main [1064] mmapping 207712 Kbytes
:
main [1231] 14115785 pps
main [1231] 14118009 pps

 Linux in-kernelパケット生成処理を行うpktgenと、netmapドライバを組み込まれたpkt-genでは、パケット生成能力が大きく異なります(少し名前がややこしいですね…)。

 10Gigabit Ethernet上でpktgenを用いて64バイトのパケット生成した場合は2.6万パケット/秒だったのに比べ、pkt-genを用いた場合、14.4万パケット/秒と大きく向上している点が見えます。これだけ大きな負荷を掛けることで、受信側OSに内在するパケット処理情報の限界や問題点などを確認できます。

 私達研究所の実験環境でも同様のトラフィック生成を行い、OSやアプリケーションの挙動確認を行っています。高負荷状態でのシステムの安定性は、安定的なサービス提供が必要とされるWebサービスにとっては不可欠な知見なので、ぜひご自身で試してください。

次回予告

 ここまで、今後の普及が期待されている10Gigabit Ethernetの簡単な使い方と性能限界について見てきました。現在開発されているネットワーク・インターフェースは、すでにInfinibandでは56Gigabit/secと、より広帯域のメディアも存在しています。SSDなど半導体ディスクや10Gigabit Ethernetに代表される高速ネットワークが普及してくると、いままで使っていたアプリケーションやデータベースへの負荷バランスなども、一気に変化していきます。今後の安定的なWebサービス提供のためにも、システム・エンジニアの皆さんには、新しい技術に積極的に触れて、事前に慣れておいていただければと思います。

 次回以降は、一つ一つのネットワーク技術をより詳しく見ていきましょう。

お知らせ

 8月1日開催のイベント「Developers Summit 2013 Summer」(夏サミ2013)で、10Gigabit Ethernetの実践的な使いどころのほか、さらにその先の40Gigabit Ethernetに関する考察も紹介されます。ぜひご参加ください!
 

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Webサービスのためのシステム・ベンチマーク入門連載記事一覧

もっと読む

この記事の著者

松本 直人(マツモト ナオト)

1996年より特別第二種通信事業者のエンジニアとしてインターネット網整備に従事。その後システム・コンサルタント,ビジネス・コンサルタントを経て2010年より,さくらインターネット株式会社 / さくらインターネット 研究所 上級研究員。(2016年より一時退任)研究テーマはネットワーク仮想化など。3~5年先に必要とされる技術研究に取り組み、世の中に情報共有することを活動基本としている。著書: 『モノのインターネットのコトハジメ』,『角川インターネット講座 ~ビッグデータを開拓せよ~』など多数。情報処理学会 インターネットと運用技術研究会 幹事

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7135 2013/07/19 12:25

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー