ITお絵かき修行

3歩歩いても忘れないために

AWS Summit Tokyo 2016メモ【The State of The Art - AWS / EC2 Networking (同時通訳)】

AWS Summit Tokyo 2016に参加した。
下記セッションに参加したので、参加メモを書いておく。
※正確な情報・見解は後日公開される(であろう)登壇者のスライドや公式資料等を参照のこと。
www.awssummit.tokyo

The State of The Art - AWS / EC2 Networking (同時通訳)]

Kevin Miller (Director, Software Development, EC2 Networking, Amazon Web Services, Inc.)

【概要】

EC2における、LinuxカーネルレベルでのTCPネットワークパラメータチューニングの話。
AWS,EC2に拘った内容というよりは、Linux全般でのTCPチューニングの話だった。
とにかく話が早くあっという間に終わった。

【内容】

TCPの性能

TCPSSH、HTTP等のベースプロトコルであり、送信側と受信側それぞれが互いに接続しあう。
TCPの特徴として、異なる大きさの送信/受信ウィンドウを持つ。
輻輳制御ウィンドウ:送信側が制御する。輻輳制御アルゴリズムで制御する。
・パケットの損失(パケットロス)がスループットに与える影響について触れていた。
 TCPの統計値取得   :netstat -s | grep retransit
 ソケットレベルの診断:ss -ite
・パケットの再送状況をリアルタイムに取得できるコマンドがgithub上にあるとのこと。詳しくは下記を参照。
github.com

Linux輻輳制御アルゴリズム
1.BIC (Linux2.6.6~2.6.18)
2.CUBIC(Linux2.6.19以降)
TCP Renoに代わるアルゴリズム

・再送タイマー
パケットロスした、とみなす時間の設定。
短すぎると:過剰反応してしまい、パフォーマンスが落ちる。
長すぎると:パケットロスの検知が遅れ、パフォーマンスが落ちる。
デフォルトは200ミリ秒。

・ip route list
AWSの場合、サブネット内の他のインスタンスへルーティングしている場合があるので、そこの再送時間の設定を変える。(例えば10ミリ秒にする等)

・ネットワークパスのチューニング
パス上のルータにネットワークバッファがある。
→NWへの負荷が高まると、再送が多くなり、結果としてタイムアウトを引き起こす原因となる。

・ネットワークバッファのアクティブキュー管理
→tc qdisc list
・fq_codel
→チューニングが不要な、qdiscのアルゴリズム

・EC2拡張NW機能
EC2で提供するAmazonLinux,Windows(WindowsServer?)に組み込まれたドライバにて利用することができる。詳しくは下記を参照。
www.youtube.com

・MTU

Maximum Transmission Unit (MTU)は、ネットワークにおいて1回の転送(1フレーム)で送信できるデータの最大値を示す伝送単位のこと。
Maximum Transmission Unit - Wikipedia

多くのドライバは1500バイトを設定することができる。しかし上記の「EC2拡張NW機能」のドライバを使うと9000バイトまで設定することができる。よってオーバヘッドを減らすことができる。
→MTUの設定値は「ip route list」から確認することができる。

②応用

実際に上記で取り上げた要素を使って、測定を行った結果を紹介していた。

まとめ

・ネットワークはブラックボックスではない。Linuxの各種ツールを使用することで理解することができる。
・設定の調整により、性能を飛躍的に向上させることができる。
・ネットワークからアプリケーションのニーズを捉え、調整することが重要。