2024年8月29日 【Google Cloud】Cloud Storage FUSE Read Cache を試してみた Google Cloud 検索する Popular tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category Google Cloud Author k-hirase SHARE 目次 はじめに Cloud Storage FUSE Read Cache とは? 測定準備 環境準備および測定 測定結果 まとめ Content はじめに こんにちは。 Google Cloud 上ではオブジェクトストレージとして Cloud Storage が提供されています。 Cloud Storage は下記の特徴をもつ優れたストレージですが、トレードオフとしてアクセス速度がネックとなりがちでした。 ・ 可用性が高い(99.99%) ・ データを書き込む前に常に暗号化 ・ 安価に大容量を保管できる 今回、Google Cloud Next ’24 で「Cloud Storage FUSE Read Cache」が一般提供( GA )となったことを受け、アクセス速度がどのくらい向上できるのか、調査してみたいと思います。 Cloud Storage FUSE Read Cache とは? 「Cloud Storage FUSE Read Cache」は、ファイルシステムのように Cloud Storage をマウントし、ファイルを扱う際に「読み取りキャッシュ」を利用してレスポンスの改善を図る仕組みです。 一般的にキャッシュは、速度の違うレイヤ間で緩衝材として働き、最終的な遅延を防ぐアーキテクチャの一つで、CPU コアの L1 /L2 キャッシュ、 エンタープライズクラスの物理ストレージ機器が搭載するキャッシュ機能、Web サーバのコンテンツキャッシュ等が有名ですね。 ※ 参考までにベースとなっている技術/情報について簡単に記載します。 FUSE : FileSystem in Userspaceの略で、特別な権限を必要とせずファイルシステムをマウントする機能 Cloud Storage FUSE: FUSE を利用して、Cloud Storage バケットをローカル ファイル システムとしてマウントして透過的にアクセスできるようにする FUSE アダプタ Cloud Storage FUSE Read Cache: 「Cloud Storage FUSE」に Read Cache 機能を搭載 測定準備 今回は「キャッシュあり/キャッシュなし」の2パターンで、パフォーマンスの測定を行いました。 構成概要図 Cloud Storage FUSE キャッシュ設定 file-cache: max-size-mb: -1 cache-file-for-range-read: false metadata-cache: stat-cache-max-size-mb: 32 ttl-secs: 3600 type-cache-max-size-mb: 4 cache-dir: /mnt/cache_dir 計測ツール fio (Flexible I/O tester) 3.19 主な設定 bs=4k numjobs=16 runtime=10 計測方針 今回は、「ストレージの限界速度」より「通常のファイル利用」を想定した計測を目的として、ブロックサイズは「4k」とし、ファイルサイズや I/O パターンについても下記を指定しました。 検証ファイルサイズ 10KB、200MB、1GB I/O パターン シーケンシャル アクセス: read、write、 ランダム アクセス:random read、random write 仮説 測定にあたり、下記の仮説をたてて検証を行います。 • read は「キャッシュあり」の方が早い • random read は「キャッシュあり」の方が早い • Cloud Storage FUSE は小さいファイルの扱いが苦手 • write/Random Write は 「キャッシュ有無」にかかわらず、ほぼ同程度 環境準備および測定 下記の手順で、環境を準備し、測定を実施しました。 ① 検証用の Compute Engine/Cloud Storage バケット を作成 ② 必要なツールをインストール sudo tee /etc/yum.repos.d/gcsfuse.repo > /dev/null < ③ (構成2のみ)ローカルSSDをフォーマット(ext4)し、インスタンスにマウント sudo fdisk /dev/sdb sudo mkfs.ext4 /dev/sdb1 sudo mount -o discard,defaults /dev/sdb1 /mnt/cache_dir ④ (構成2のみ)Cloud Storage FUSEの設定ファイルを作成 sudo tee /etc/fuse.config > /dev/null < ⑤ Cloud Storage FUSE にて、検証サーバに Cloud Storage をマウント sudo mkdir -p /mnt/target_dir sudo gcsfuse --config-file /etc/fuse.conf (Cloud Storage バケット名) /mnt/target_dir ⑥ パフォーマンスの測定 ファイルサイズに応じて、パフォーマンスを測定。 ※ 試験項目に応じて、I/O パターン (-rw オプション) を 「read、write、random read、random write」に適宜変更する。 # 10KB sudo fio -filename=/mnt/target_dir/test10k -direct=1 -rw=read -bs=4k -size=10K -numjobs=16 -runtime=10 -group_reporting -name=file1-1-1 # 200MB sudo fio -filename=/mnt/target_dir/test200m -direct=1 -rw=read -bs=4k -size=200M -numjobs=16 -runtime=10 -group_reporting -name=file2-1-1 # 1GB sudo fio -filename=/mnt/target_dir/test1g -direct=1 -rw=read -bs=4k -size=1G -numjobs=16 -runtime=10 -group_reporting -name=file3-1-1 測定結果 測定ツール (fio) による測定にて以下のような結果となりました。 ※ インスタンス性能や、測定時間帯などによって変動がある可能性があるため、本結果がパフォーマンスを保証するものではありません。 計測項目 Bandwidth (MiB/sec) 転送速度。 単位時間あたりにどのくらいの容量を読み/書きできるか。 Latency (msec) I/O リクエストが完了するまでの平均時間 IOPS 1秒間にディスクが完了できる入出力操作の数 Read Write Random Read Random Write 考察 測定結果を事前に立てた仮説と比較すると、ほぼ想定通りの結果を得ることができました。 〇 • read は「キャッシュあり」の方が早い 〇 • random read は「キャッシュあり」の方が早い → Cloud Storage は ランダムアクセスが苦手ですが、キャッシュ( cache-file-for-range-read フラグ)のおかげで、よい性能が出ていると想定しています。 〇 • Cloud Storage FUSE は小さいファイルの扱いが苦手 → ベストプラクティスに記載の通り、ほぼ想定通りですが、「キャッシュあり」は意外に良い結果に見えます。 → Cloud Storage ではなく、ローカル SSD からキャッシュを読み取っていることが影響していると想定します。 〇 • write/Random Write は 「キャッシュ有無」にかかわらず ほぼ同程度 → Cloud Storage FUSE は Writeは苦手ですね。 また、パフォーマンスが発揮できると記載がある「200MB、Read」については、かなり良い数値がでているのではないかと思います。 まとめ 今回は「Cloud Storage FUSE Read Cache」の検証を行いました。 読み込み/書き込みにてパフォーマンス特性の違う「Cloud Storage / Cloud Storage FUSE」ですが、 キャッシュを利用することによって、メリットを生かしたシステムアーキテクチャも検討できるのではないかなと思います。 ・ 同じファイルを何回も読み込む特性があるシステムには、かなり効果的。 ・ 逆に、書き込みが多いシステムはボトルネックとなる可能性が高い。 ・ 費用面は「キャッシュディスク費用」と「アクセス頻度 × Cloud Storage オペレーション費用」の比較が必要。 ・ キャッシュディスクは、ネットワークを経由しない「ローカルSSD」や「インメモリ」がおすすめです。 ・ ディスクへのアクセス性能はインスタンスタイプを向上することによって、改善する可能性もあります。 日々新しい機能が開発/提供されていくのがクラウド環境のいいところですね。 新しく GA されたキャッシュ機能を是非ご活用ください。 最後まで読んでいただき、ありがとうございました! 当社システムサポートは、Google Cloud の導入・移行・運営支援を行っています。 クラウド移行含めた最適なシステム環境構築のご相談は、以下よりお願いいたします! Google Cloud 導入についてのお問い合わせはこちら 関連コンテンツ 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 Author k-hirase 情シス常駐のなかで自然とインフラ領域へ。 運用保守、ネットワーク、セキュリティ、仮想化等を経て、現在はクラウドにたどり着く。 実は元VB6プログラマ。料理好き。 Google Cloud 2024年8月29日 【Google Cloud】Cloud Storage FUSE Read Cache を試してみた Category Google Cloud 前の記事を読む Google Cloud Next Tokyo ’24 参加レポート~Google Cloud初心者が参加してみた~ 次の記事を読む 【Google Cloud】Cloud NGFW Standard を試してみた Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2024年12月24日 技術開発 【初心者向け】FastAPI解説 2024年12月5日 お知らせ 「Google Cloud Partner Top Engineer 2025」をSTS社員4名が受賞しました 2024年10月9日 イベント・セミナー 【参加無料】typeエンジニア転職フェア 出展のお知らせ(2024/10/12) HOME Google Cloud 【Google Cloud】Cloud Storage FUSE Read Cache を試してみた ご意見・ご相談・料金のお見積もりなど、お気軽にお問い合わせください。 お問い合わせはこちら HOME Categories お知らせ イベント・セミナー Google Cloud Google Workspace モバイル インフラ 技術開発 ブログ 4koma Tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL STSエンジニアリングマガジン 「サイタル」 当サイトではクッキー(Cookie)、Googleアナリティクスを利用します。 「同意する」をクリックいただくことで、サイト上での最高のエクスペリエンスをご提供いたします。 ※詳細は以下をご覧ください。 外部送信ポリシー プライバシーポリシー同意する同意しない