EFSへの書き込み速度を上げる(小ネタ)

22.8K Views

April 16, 22

スライド概要

JAWS-UG 浜松 AWS 勉強会 2021#6 2021/06/25

profile-image

Qiita や Zenn でいろいろ書いてます。 https://qiita.com/hmatsu47 https://zenn.dev/hmatsu47 MySQL 8.0 の薄い本 : https://github.com/hmatsu47/mysql80_no_usui_hon Aurora MySQL v1 → v3 移行計画 : https://zenn.dev/hmatsu47/books/aurora-mysql3-plan-book

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

EFS への書き込み速度を上げる(小ネタ) JAWS-UG 浜松 AWS 勉強会 2021#6 2021/06/25 まつひさ(hmatsu47)

2.

自己紹介 松久裕保(@hmatsu47) https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています (ほかに書くことがなくなったので省略) 2

3.

今日の内容 ● EFS とは ● EFS は書き込みが遅い ○ Amazon Linux 2 の /usr/ を普通に rsync ■ 1 ゾーンで約 15 倍、標準(1 リージョン)で約 29 倍遅い ● 処理を並列化してみると… ○ xargs を使って並列で rsync ■ 1 インスタンスの EC2 からのアクセスでも高速化が可能 3

4.

EFS とは ● フルマネージドの分散・共有ファイルシステム ○ https://aws.amazon.com/jp/efs/ ● NFSv4 プロトコルでアクセス可能 ○ NFS v4.0 および v4.1 をサポート ● 高可用性・高耐久性 ○ 1 ゾーンストレージクラスと標準ストレージクラス ■ 1 ゾーン内または 1 リージョン内で冗長化 ○ 耐久性は 99.999999999% 4

5.

EFS の弱点 ● とにかく書き込みが遅い ○ 分散・共有ファイルシステムなので… ● 例えば、Amazon Linux 2 で普通に rsync してみると ○ m5.large で /usr/(1.1GB)から別のファイルシステムにコピー rsync -avz /usr/ /mnt/【コピー先】/usr/ ○ 対 EBS(gp3 IOPS:3000) : 00 分 54 秒 ○ 対 EFS(1 ゾーン・バースト) : 13 分 51 秒(15.4 倍遅い) ○ 対 EFS(標準・同) 25 分 58 秒(28.9 倍遅い) : 5

6.

処理を並列化してみる ● rsync を xargs と組み合わせる ls -1 /usr | xargs -I {arg} -P 【並列数】 -n 1 rsync -avz /usr/{arg} /mnt/【コピー先】 /usr/ コピー先 通常(1 並列) 2 並列 4 並列 EBS(gp3 IOPS:3000) 00:54 - 00:42 - 00:39 - EFS(1 ゾーン・バースト) 13:51 15.4 倍遅い 09:09 13.1 倍遅い 06:23 9.8 倍遅い EFS(標準・同) 25:58 28.9 倍遅い 16:35 23.7 倍遅い 11:28 17.6 倍遅い 6

7.

処理を並列化してみる 7

8.

補足など ● 並列数をもっと増やすとさらに高速化する ○ m5.large (2vCPU)のように vCPU 数の少ないインスタンスで も 10 ~ 16 並列ぐらいは行ける ■ /usr/ 直下のディレクトリの数が少なく中のファイル容量や数のバランスが 悪いので今回は 4 並列まで(バランスが良いと線形に性能向上する) ● 一部の NFS クライアントでは並列化の効果が出ない ○ RHEL 6 など ○ 処理を直列化してしまうため 8

9.

参考:読み取り(find)並列化 ● 通常 : find -type f -exec cat {} \; ● 並列 : find -type f -print0 | xargs -0 -I {arg} -P 【並列数】 -n 1 cat {arg} ※都度 OS を再起動し、OS のディスクキャッシュがクリアされた状態で計測 通常 (1 並列) 2 並列 4 並列 8 並列 EBS(gp3 IOPS:3000) 00:46 00:24 00:17 00:16 EFS(1 ゾーン・バースト) 02:43 01:05 00:36 00:28 EFS(標準・同) 02:47 01:10 00:35 00:26 読み取り対象 9

10.

参考:読み取り(find)並列化 10

11.

まとめ ● 処理を並列化すると速くなる ○ 1 インスタンスからのアクセスでも ○ vCPU 数が少なくても ■ 一部 OS で速くならない点には注意 ● 書き込みと読み取りでは少し傾向が違う ○ EBS との差は読み取りのほうが小さい ○ 読み取りでは 1 ゾーンと標準の性能差はない ■ 帯域の上限に達するまでは 11