FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

【AWS】NFSを測ってみる

こんにちは、貴子です。
前回、s3をNFSとしてできるように環境を整えましたが
今回はその続きで「書き込み速度」と「読み出し速度」を測ります。
比べる対象として3つの環境を用意しました。
インスタンスは全てt2.microです。f:id:no_sugiyama:20150722161039p:plain


書き込み速度を測る

10G・1G・1M・4kのダミーファイルを作成して、書き込み速度を測ります。
※計測する度にサーバーのキャッシュクリアを行っています。
・ダミーファイル作成コマンド
10G
time dd if=/dev/zero of=zero1 bs=1MiB count=10000; time sync
1G
time dd if=/dev/zero of=zero1 bs=1MiB count=1000; time sync
1M
time dd if=/dev/zero of=zero1 bs=1MiB count=1; time sync
4k
time dd if=/dev/zero of=zero1 bs=4KiB count=1; time sync
3回実行して平均値を出し、書き込み時間を計算します。
10G ec2 10737418240(byte)÷242.85(s)=44.21MB/s
s3 10737418240(byte)÷543.65(s)=19.75MB/s
ebs 10737418240(byte)÷170.11(s)=63.12MB/s
1G ec2 107374182(byte)÷24.55(s)=4.37MB/s
s3 107374182(byte)÷74.49s)=1.44MB/s
ebs 107374182(byte)÷17.24(s)=6.23MB/s
1M ec2 1048576(byte)÷0.038(s)=27.84MB/s
s3 1048576(byte)÷0.44(s)=2.37MB/s
ebs 1048576(byte)÷0.016(s)=66.93MB/s
4k ec2 4096(byte)÷0.012=351KB/s
s3 4096(byte)÷0.25(s)=16KB/s
ebs 4096(byte)÷0.002(s)=2.05MB/s

読み込み速度を測る

先ほど作成したダミーファイルを使って、読み出し時間を計測してみます。
※こちらも計測する度にサーバーのキャッシュクリアを行っています。
time dd if=zero1 of=/dev/null
3回実行して平均値を出し、読み出し時間を計算します。
10G ec2 10737418240(byte)÷168.48(s)=63.73MB/s
s3 10737418240(byte)÷410.67(s)=26.14MB/s
ebs 10737418240(byte)÷167.58(s)=64.07MB/s
1G ec2 107374182(byte)÷16.99(s)=6.32MB/s
s3 107374182(byte)÷55.37(s)=1.94MB/s
ebs 107374182(byte)÷16.94(s)=6.34MB/s
1M ec2 1048576(byte)÷0.025(s)=42.80MB/s
s3 1048576(byte)÷0.386(s)=2.72MB/s
ebs 1048576(byte)÷0.019(s)=56.17MB/s
4k ec2 4096(byte)÷0.009(s)=0.48MB/s
s3 4096(byte)÷0.19(s)=0.21MB/s
ebs 4096(byte)÷0.002(s)=2MB/s

結果

s3は10G・1Gだとebsに比べて3~4倍遅く、1M・4kだと10倍以上遅い結果となりました。
s3のNFSでは、高い堅牢性と安い料金で使用できるので凄く助かるのですが、
こんなに速度に差がでてしまうと躊躇しますね。
また意外にもebsとec2では書き込みだと結構差が着くのですが、読み込みだと大差ありませんでした。

感想

この記事を書くにあたり、私にはNFSの知識が乏しくて本当にたくさん考えてました。
学習が足りないなーとひしひし実感したので、
1個づつトライして自分の中で「根拠と基準値」を貯めていくようにします。