AWS EFSのファイル読み込みのスループットを計測する
AWS EFS Oregon regionのファイル読み込みのスループットを計測する。複数のEC2から同時にファイルを読み込んだ場合のスループットも計測する。
また、すべてのEFSは100 MiB/秒のスループットまでバーストするとマニュアルに記載があるが、読み込み時にバーストされているか確認する。
方法
1. EFSを立ち上げる。5GBのファイルをEFSに配置。
2. EC2 を立ち上げる。5GBのファイルをEFS⇨EC2へコピーする。
3. コピーにかかった時間を計測する。転送速度を算出する。
マシンスペック
EFS
Performance mode Max I/O,
Encrypted No,
Metered size 105GB,
Availability zone us-west-2a
EC2
AMI ubuntu-xenial-16.04-amd64-server-20180522 (ami-db710fa3),
Instance type m4.large,
volume tpye gp2 (8GB),
Availability zone us-west-2a
・マウントにはEFS Mountを使用した。
・Metered sizeが大きいほどスループットのバースト時間は長くなる。そのためEFSにファイルを>100GB 配置している。
Burst to 100 MiB/s for up to 72 minutes each day, or
Drive up to 5 MiB/s continuously
英文は下のサイト(マニュアル)から引用
https://docs.aws.amazon.com/efs/latest/ug/performance.html
・EC2がスループットのボトルネックにならないようなスペックにしている。
結果
EC2の数 | ave(real time) | スループット (EC2 1台あたり) | スループット * EC2の数 |
---|---|---|---|
1 | 93.51 | 53.47MiB/s | 53.47MiB/s |
2 | 101.95 | 49.04MiB/s | 98.08MiB/s |
4 | 203.33 | 25.49MiB/s | 101.96MiB/s |
8 | 407.73 | 12.26MiB/s | 98.08MiB/s |
・EFSは100MiB/sの回線を共有して使用する。(バースト時)
・EC2 1台だと50MiB/sくらい。100MiB/sの速度はでない。
・スループットはave(real time)から算出しているため、実際のスループットとは数MiBのズレがある。
マニュアルをみてもファイルシステムごとに100 MiB/sのスループットが使用できるという認識で間違いないと思う。
All file systems, regardless of size, can burst to 100 MiB/s of throughput, and those over 1 TiB large can burst to 100 MiB/s per TiB of data stored in the file system. For example, a 10 TiB file system can burst to 1,000 MiB/s of throughput (10 TiB x 100 MiB/s/TiB).
英文は下のサイト(マニュアル)から引用
https://docs.aws.amazon.com/efs/latest/ug/performance.html
結果詳細
EC2 1台
# | real time | user time | sys time |
---|---|---|---|
1 | 93.51 | 0.01 | 5.26 |
EC2 2台で同時読み込み
# | real time | user time | sys time |
---|---|---|---|
1 | 101.76 | 0.00 | 4.69 |
2 | 102.14 | 0.00 | 4.85 |
EC2 4台で同時読み込み
# | real time | user time | sys time |
---|---|---|---|
1 | 202.66 | 0.00 | 4.96 |
2 | 203.27 | 0.00 | 4.81 |
3 | 203.62 | 0.00 | 4.89 |
4 | 203.77 | 0.02 | 4.98 |
EC2 8台で同時読み込み
# | real time | user time | sys time |
---|---|---|---|
1 | 405.71 | 0.00 | 5.08 |
2 | 406.76 | 0.00 | 4.91 |
3 | 407.62 | 0.00 | 4.90 |
4 | 407.72 | 0.02 | 5.05 |
5 | 407.89 | 0.00 | 4.95 |
6 | 408.54 | 0.02 | 5.30 |
7 | 408.74 | 0.02 | 5.15 |
8 | 408.91 | 0.00 | 5.10 |
バーストクレジットについて
Cloud WatchのBurstCreditBalanceとPermittedThroughputを使用すると理解しやすい。
BurstCreditBalance
・データコピーを実施したらバーストクレジットが減っていった。
・データコピーをしていないときはバーストクレジットが回復していく。Metered size が10GBより100GBの方が回復量が大きい。
PermittedThroughput
・EFSの最大スループットが表示される。今回はクレジットに余裕があったため、105MB/sから下がることはなかった。
メモ
・EFSにファイルを配置したからといって、即座にMetered sizeが増えるわけではない。どこかのタイミングでディスク使用量が増える。
・EFSへの大量のアクセスが予想されたため、Max I/Oを選択したが、マニュアルの「Using The Right Performance Mode」を実施しGeneral Purpose Performance Modeが使用可能であるかチェックするべきであった。
https://docs.aws.amazon.com/efs/latest/ug/performance.html
・EFSでは英語版のマニュアルが日本語版よりかなり充実している。