永続ディスクとローカル SSD のパフォーマンスの最適化

永続ディスクは、価格、性能、予測可能性の点で最も一般的なストレージ オプションです。ローカル SSD を使用すると、さらにパフォーマンスに優れレイテンシの低いインスタンスを作成できますが、永続ディスクのようなデータの冗長性と耐久性はありません。インスタンスで実行するアプリケーションのストレージ オプションを設定する手順は次のとおりです。

  • 必要な容量を決定します。
  • アプリケーションで必要なパフォーマンス特性を決定します。
  • ストレージのパフォーマンスが最適になるようにインスタンスを設定します。

このドキュメントでは、Compute Engine のインスタンスに接続できるブロック ストレージのオプションについて説明します。Google Cloud Platform でのストレージ オプションの完全なリストについては、ストレージ オプションの選択をご覧ください。

ブロック ストレージのパフォーマンスの比較

インスタンスに対する適切なディスクタイプとサイズを決定するときは、ストレージのサイズとパフォーマンスの要件を検討します。特定のアプリケーションのパフォーマンス要件は、通常、2 つの異なる IO パターンに分類されます。

  • 小規模な読み取りと書き込み
  • 大規模な読み取りと書き込み

小規模な読み書きの場合、制限の要因となるのは 1 秒あたりのランダムな入出力オペレーション回数(IOPS)です。

大規模な読み書きの場合、制限の要因となるのはスループットです。

標準永続ディスク SSD 永続ディスク ローカル SSD(SCSI) ローカル SSD(NVMe)
最大持続 IOPS
読み取り IOPS/GB 0.75 30 266.7 453.3
書き込み IOPS/GB 1.5 30 186.7 240
読み取り IOPS/インスタンス 3,000 15,000~40,000* 400,000 680,000
書き込み IOPS/インスタンス 15,000 15,000~30,000* 280,000 360,000
最大持続スループット(MB/秒)
読み取りスループット/GB 0.12 0.48 1.04 1.77
書き込みスループット/GB 0.12 0.48 0.73 0.94
読み取りスループット/インスタンス 180 240~800* 1,560 2,650
書き込みスループット/インスタンス 120 240~400* 1,090 1,400

* SSD 永続ディスクでは、vCPU の数が多いほど、インスタンスで達成できる IOPS とスループットのパフォーマンスが高くなります。詳しくは、SSD 永続ディスクのパフォーマンスの限界をご覧ください。

永続ディスクと物理ハードドライブの比較

永続ディスクのサイズを指定するときは、これらのディスクが従来の物理ハードドライブと比較してどの程度かということを考えます。次の表は、標準的な永続ディスクおよび SSD 永続ディスクを、一般的な 7200 RPM SATA ドライブで期待される典型的なパフォーマンス(75 IOPS または 120 MB/秒)と比較したものです。

IO の種類 IO のパターン 7200 RPM SATA ドライブに匹敵するために必要なサイズ
標準永続ディスク SSD 永続ディスク
小規模でランダムな読み取り 小規模でランダムな読み取り 75 IOPS 100 GB 3 GB
小規模でランダムな書き込み 小規模でランダムな書き込み 75 IOPS 50 GB 3 GB
大量のストリーミング読み取り 120 MB/秒ストリーミング読み取り 1,000 GB 250 GB
大量のストリーミング書き込み 120 MB/秒ストリーミング書き込み 1,000 GB 250 GB

サイズ、価格、パフォーマンスの概要

アプリケーションのボリュームのタイプとサイズを選択する際に考慮すべき情報がいくつかありますが、考慮する必要のない要素の 1 つはボリュームを使用する価格です。永続ディスクには IO あたりのコストはないので、ディスク費用の予算を計算するために、毎月の I/O 量を見積もる必要はありません。

標準永続ディスクと SSD 永続ディスクの相対的なコストを比較してみましょう。標準永続ディスクの料金は、1 GB あたり $0.040 で、SSD 永続ディスクは 1 GB あたり $0.170 です。ただし、パフォーマンスの上限はボリューム サイズに比例します。IOPS 指向ワークロードの IOPS あたりのコストを見てみましょう。

標準永続ディスクの場合、ランダム読み取りの IOPS で約 $0.133、ランダム書き込みの IOPS で約 $0.0266 です。SSD 永続ディスクの場合は、ランダム読み取りの IOPS で $0.0057、ランダム書き込みの IOPS で $0.0057 です。SSD 永続ディスクの IOPS あたりの料金は、そのインスタンスの IOPS または vCPU の数の上限に達するまで適用されます。

SSD 永続ディスクは、ランダム読み取りの上限である 40,000 IOPS には 1,334 GB で、ランダム書き込みの上限である 30,000 IOPS には 1,000 GB で到達します。これに対し、標準永続ディスクは、ランダム読み取りの上限である 3,000 IOPS には 4 TB で、ランダム書き込みの上限である 15,000 IOPS には 10 TB で到達します。

標準永続ディスク

標準永続ディスクのパフォーマンスは、ボリューム パフォーマンスの限界まで直線的に上昇します。インスタンスの vCPU の数は、標準永続ディスクのパフォーマンスを制限しません。

標準永続ディスクの IOPS とスループットのパフォーマンスは、以下のインスタンスごとの限界に達するまで、ディスクのサイズに比例して直線的に上昇します。

  • 読み取りスループット: ディスクサイズ 1.5 TB で最大 180 MB/秒。
  • 書き込みスループット: ディスクサイズ 1 TB で最大 120 MB/秒。
  • 読み取り IOPS: ディスクサイズ 4 TB で最大 3,000 IOPS。
  • 書き込み IOPS: ディスクサイズ 10 TB で最大 15,000 IOPS。

永続ディスクのパフォーマンスの利点を既存のインスタンスで実現するには、永続ディスクのサイズを変更して、永続ディスクごとの IOPS とスループットを増やします。

ボリューム サイズ(GB) 月額 持続的ランダム IOPS 持続的スループット(MB/秒)
読み取り 書き込み 読み取り 書き込み
10 $0.40 * * * *
32 $1.28 24 48 3 3
64 $2.56 48 96 7 7
128 $4.00 96 192 15 15
256 $10.24 192 384 30 30
512 $20.48 384 768 61 61
1000 $40.00 750 1500 120 120
1500 $80.00 1500 3000 180 120
2048 $81.92 1536 3072 180 120
4000 $160.00 3000 6000 180 120
8192 $327.68 3000 12288 180 120
10000 $400.00 3000 15000 180 120
16384 $655.36 3000 15000 180 120
32768 $1,310.72 3000 15000 180 120
65536 $2,621.44 3000 15000 180 120

* このボリューム サイズはブート ボリュームにのみ使用してください。意義のあるタスクには IO バースト機能が適用されます。

SSD 永続ディスク

SSD 永続ディスクのパフォーマンスは、ボリュームの上限または各 Compute Engine インスタンスの上限に達するまで、直線的に上昇します。一般に、vCPU の数が多いインスタンスほど、スループットと IOPS の上限が高くなります。

標準永続ディスクとは異なり、SSD 永続ディスクでは、インスタンスの vCPU の数が多いほど、IOPS のパフォーマンスが向上します。

インスタンスの vCPU の数 持続的ランダム IOPS 持続的スループット(MB/秒)
読み取り 書き込み 読み取り 書き込み
15 以下 15,000 15,000 240 240
16~31 25,000 25,000 480 240
32 以上 40,000 30,000 800 400

既存インスタンスの SSD 永続ディスクのパフォーマンスを向上させるには、マシンタイプを変更して VM あたりの上限を増やし、永続ディスクのサイズを変更して永続ディスクごとの IOPS とスループットを増やします。

ボリューム サイズ(GB) 月額 持続的ランダム IOPS 持続的スループット(MB/秒)
読み取り 書き込み 読み取り 書き込み
10 $1.70 300 300 4.8 4.8
32 $5.44 960 960 15 15
64 $10.88 1920 1920 30 30
128 $21.76 3840 3840 61 61
256 $43.52 7680 7680 122 122
500 $85.00 15000 15000 240 240
834 $141.78 25000 25000 400 400
1000 $170.00 30000 30000 480 400
1334 $226.78 40000 30000 640 400
1667 $283.39 40000 30000 800 400
2048 $348.16 40000 30000 800 400
4096 $696.32 40000 30000 800 400
8192 $1,392.64 40000 30000 800 400
16384 $5,570.56 40000 30000 800 400
32768 $5,570.56 40000 30000 800 400
65536 $11,141.12 40000 30000 800 400

同時読み書き

標準永続ディスクの場合、同時読み書きには 1 つのパフォーマンス上限が適用されます。インスタンスで読み取りスループットまたは IOPS の使用が増えると、実行できる書き込みが減ります。インスタンスの書き込みスループットが増加すると、可能な読み取りの量は減少します。

SSD 永続ディスクは、読み取りスループットの上限と書き込みスループットの上限を同時に達成できます。一方、IOPS については、読み取りの上限と書き込みの上限を同時に達成することはできません。同時読み書きの間にスループットの上限を達成するには、IOPS のボトルネックに達することなく、ボリュームがスループットの上限を満たすことができるように、IO サイズを最適化します。

同時読み書きでのインスタンスの IOPS の上限:

標準永続ディスク SSD 永続ディスク(8 vCPU) SSD 永続ディスク(32 vCPU 以上)
読み取り 書き込み 読み取り 書き込み 読み取り 書き込み
3,000 IOPS 0 IOPS 15,000 IOPS 0 IOPS 40,000 IOPS 0 IOPS
2,250 IOPS 3,750 IOPS 11,250 IOPS 3,750 IOPS 30,000 IOPS 3,700 IOPS
1,500 IOPS 7,500 IOPS 7,500 IOPS 7,500 IOPS 20,000 IOPS 15,000 IOPS
750 IOPS 11,250 IOPS 3,750 IOPS 11,250 IOPS 10,000 IOPS 22,500 IOPS
0 IOPS 15,000 IOPS 0 IOPS 15,000 IOPS 0 IOPS 30,000 IOPS

同時読み書きでのインスタンスのスループットの上限:

標準永続ディスク SSD 永続ディスク(8 vCPU) SSD 永続ディスク(32 vCPU 以上)
読み取り 書き込み 読み取り 書き込み 読み取り 書き込み
180 MB/秒 0 MB/秒 240 MB/秒 240 MB/秒 800 MB/秒 400 MB/秒
135 MB/秒 30 MB/秒
90 MB/秒 60 MB/秒
45 MB/秒 90 MB/秒
0 MB/秒 120 MB/秒

書き込みスループットの下りネットワーク上限

永続ディスクへの書き込み操作を行うたびに、仮想マシン インスタンスの累積ネットワーク下りトラフィックが増加します。つまり、永続ディスクの書き込み操作は、インスタンスの下りネットワーク上限によって制限されます。

仮想マシン インスタンスが実行できる永続ディスクの最大書き込みトラフィックを計算するには、2 ギガビット/秒/vCPU のネットワーク上限からインスタンスの他の下りネットワーク トラフィックを差し引きます。残りのスループットが、永続ディスクの書き込みトラフィックに利用可能なスループットを表します。

永続ディスク ストレージはデータの冗長性が 3.3 倍なので、各書き込みも 3.3 倍になります。つまり、1 回の書き込み操作が 3.3 回の I/O 操作になります。

次の表は、仮想マシンの下りネットワーク上限に基づいて、仮想マシン インスタンスごとの永続ディスク I/O 上限を示したものです。これらの値は、他の IP トラフィックがないインスタンスに基づいています。

標準永続ディスク SSD 永続ディスク
vCPU の数 標準永続ディスクの書き込み上限(MB/秒) 上限に達するのに必要な標準ボリューム サイズ(GB) SSD 永続ディスクの書き込み上限(MB/秒) 上限に達するのに必要な SSD 永続ディスクサイズ(GB)
1 78 650 78 163
2 120 1,000 156 326
4 120 1,000 240 500
8 120 1,000 240 500
16 120 1,000 240 500
32+ 120 1,000 480 1,000

上記の値を求めるには、下りネットワーク上限の 2 GB/秒(256 MB/秒に相当)をデータ冗長化乗数(3.3)で割ります。

1 vCPU の最大書き込み I/O 数 = 256 / 3.3 = 約 78 MB/秒の標準永続ディスクによって実行される I/O

前に示したパフォーマンスの表で示されている標準永続ディスクの GB あたり書き込みスループットの値を使用すると、次のようにして適切なディスクサイズを求めることができます。

望ましいディスクサイズ = 78 / 0.12 = 約 650 GB

永続ディスクとローカル SSD のパフォーマンスの最適化

永続ディスクとローカル SSD を最適化して、データをいっそう効率よく処理できます。

永続ディスクの最適化

永続ディスクは、ディスクタイプの表で示したパフォーマンスを実現できますが、パフォーマンスの上限に達するには、仮想マシンが十分な使用量になる必要があります。パフォーマンスのニーズに合わせて永続ディスクのボリュームを適切に設定した後は、アプリケーションとオペレーティング システムのチューニングが必要になることがあります。

このセクションでは、パフォーマンス向上のためにチューニングできるいくつかの重要な要素を説明し、その一部を特定のタイプのワークロードに適用する方法を検討します。

無駄な初期化を無効にし、DISCARD コマンドを有効にする

永続ディスクは、DISCARD(または TRIM)コマンドをサポートしています。このコマンドを使用すると、オペレーティング システムはブロックが不要になったことをディスクに通知できます。DISCARD のサポートにより、オペレーティング システムは不要なディスク ブロックをマークすることで、ブロックをゼロにするコストをかけずに済みます。

ほとんどの Linux オペレーティング システムでは、インスタンスに永続ディスクをマウントするときに、DISCARD を有効にします。Windows 2012 R2 インスタンスでは、永続ディスクをマウントすると、DISCARD がデフォルトで有効になります。Windows 2008 R2 は DISCARD をサポートしていません。

DISCARD を有効にすると、一般的なランタイム パフォーマンスが向上し、最初にマウントされるときのディスクのパフォーマンスも向上します。ディスク ボリューム全体のフォーマットには時間がかかることがあります。このような、いわゆる「怠惰なフォーマット」は一般的に行われていることです。怠惰なフォーマットの欠点は、ボリュームが初めてマウントされるときに一般に時間がかかることです。無駄な初期化を無効にして、DISCARD コマンドを有効にすることで、フォーマットとマウントの時間を短縮できます。

  • 無駄な初期化を無効にし、フォーマットの間の DISCARD を有効にするには、次のパラメータを mkfs.ext4 に渡します。

    -E lazy_itable_init=0,lazy_journal_init=0,discard
    

    lazy_journal_init=0 パラメータは、CentOS 6 または RHEL 6 イメージのインスタンスでは機能しません。これらのインスタンスの場合は、このパラメータなしで永続ディスクをフォーマットします。

    -E lazy_itable_init=0,discard
    
  • マウントで DISCARD コマンドを有効にするには、次のフラグをマウント コマンドに渡します。

    -o discard
    

IO キューの深さ

多くのアプリケーションには、パフォーマンスを調整するために IO キューの深さを変更する設定があります。キューが深いほど IOPS は増加しますが、レイテンシも増加します。キューを浅くすると、各 IO のレイテンシは減少しますが、IOPS が低下することがあります。

先読みキャッシュ

IO パフォーマンスを向上させるため、オペレーティング システムは先読みなどの技法を導入しています。先読みでは、要求されたものより多くのファイルが、後続の読み取りでそのデータが必要になるという想定の下で、メモリに読み込まれます。先読み量を多くするほどスループットは向上しますが、メモリと IOPS は犠牲になります。先読み量を少なくすると、IOPS は向上しますが、スループットは低下します。

Linux システムでは、blockdev コマンドを使用して先読み量の値を取得や設定できます。

$ sudo blockdev --getra /dev/
$ sudo blockdev --setra  /dev/

先読み量の値は、<desired_readahead_bytes>/512 バイトです。

たとえば、先読み量が 8 MB の場合、8 MB は 8,388,608 バイト(8 x 1,024 x 1,024)です。

8388608 bytes / 512 bytes = 16384

したがって、次のように設定します。

$ sudo blockdev --setra 16384 /dev/

空き CPU

永続ディスクの読み取りと書き込みには、仮想マシンの CPU サイクルが必要です。非常に高い安定した IOPS レベルを実現するには、IO の処理に自由に使用できる CPU が必要です。

IOPS 指向のワークロード

SQL であってもなくても、データベースにはデータへのランダム アクセスの使用パターンがあります。 IOPS 指向のワークロードには次のことが求められます。

  • MongoDBApache Cassandra、その他のデータベース アプリケーションのベスト プラクティス ドキュメントでは、通常、先読み量を少なくすることが指摘されています

  • IO キューの深さの値は 400~800 IOPS あたり 1 にし、大きなボリュームでの上限を 64 にします

  • 空き CPU の数を、ランダム読み取り 2,000 IOPS ごとに 1 個、ランダム書き込み 2,500 IOPS ごとに 1 個にします

スループット指向のワークロード

Hadoop ジョブのようなストリーミングオペレーションのパフォーマンスは、高速の順次読み取りによって向上します。そのため、ブロックサイズが大きいほど、ストリーミングのパフォーマンスは向上します。ボリュームでのデフォルトのブロックサイズは 4K です。スループット指向のワークロードでは、256 KB 以上の値が推奨されます。

SSD 永続ディスクのパフォーマンスの最適化

ディスクタイプ別パフォーマンスの表では、SSD 永続ディスクの予想される達成可能なパフォーマンスの値が示されています。これらの速度を達成するためにアプリケーションと仮想マシンのインスタンスを最適化するには、次のベスト プラクティスを使用します。

  • アプリケーションが十分な I/O を実行していることを確認します

    アプリケーションが実行している IOPS が前記の表で示されている上限より少ない場合、そのレベルの IOPS に達することはありません。たとえば、500 GB のディスクでは、予想される IOPS の上限は 15,000 IOPS です。しかし、アプリケーションでの実行数がそれより少ない場合、または 16 KB より大きい I/O オペレーションを発行している場合は、15,000 IOPS に達することはありません。

  • 十分な並列処理で I/O を実行していることを確認します

    オペレーティング システムの並列処理を利用して、十分に高いキューの深さを使用します。1,000 IOPS を実行しても、キューの深さが 1 の同期方式で行ったのでは、達成できる IOPS は表で示されている値よりはるかに低いものになります。アプリケーションでは、最低でも、400~800 IOPS ごとに 1 以上のキューの深さを使用する必要があります。

  • I/O を実行する仮想マシン インスタンスに使用可能な CPU が十分にあることを確認します

    仮想マシン インスタンスの CPU が不足している場合、アプリケーションは前に示した IOPS を達成できません。経験則として、予想されるトラフィックの 2,000~2,500 IOPS ごとに 1 個の CPU が必要です。

  • 大容量ディスク上で合理的な時間的データ局所性を実現するようにアプリケーションが最適化されていることを確認します

    アプリケーションがディスクの異なる部分に分散するデータに短い期間にアクセスする場合(vCPU あたり数百 GB)、最適な IOPS を達成できません。最高のパフォーマンスを得るには、時間的データ局所性、ディスクの断片化などの加重係数、ディスクのアクセス部分のランダム性について最適化する必要があります。

  • オペレーティング システムの I/O スケジューラが特定のニーズを満たすように設定されていることを確認します

    Linux ベースのシステムでは、I/O スケジューラを noop に設定することで、SSD を使用するデバイスでの IOPS 値を最高にできます。

ローカル SSD を最適化する

ディスクタイプ別パフォーマンスの表では、ローカル SSD デバイスの予想される達成可能なパフォーマンス上限の値が示されています。これらの速度を達成するためにアプリケーションと仮想マシンのインスタンスを最適化するには、次のベスト プラクティスを使用します。

ローカル SSD に Linux のゲスト環境最適化を使用する

デフォルトでは、Compute Engine が提供するほとんどの Linux イメージは、ローカル SSD のピーク パフォーマンスに合わせてインスタンスを設定する最適化スクリプトを自動的に実行します。このスクリプトは、マシンの全体的なパフォーマンスを向上させるキュー sysfs ファイルの特定の設定を有効にし、特定の仮想 CPU(vCPU)に対する割り込み要求(IRQ)をマスクします。このスクリプトは、Compute Engine ローカル SSD デバイスのパフォーマンスだけを最適化します。

Ubuntu、SLES、古いイメージは、このパフォーマンス最適化を含むように設定されていない可能性があります。これらのイメージまたは v20141218 より古いイメージを使用している場合は、代わりに Linux ゲスト環境をインストールして、その最適化を有効にすることができます。

NVMe または SCSI インターフェースに最適なイメージを選択する

ローカル SSD はインスタンスのブートディスクで使用するイメージに応じて NVMe インターフェース タイプまたは SCSI インターフェース タイプで最適に動作します。 ブートディスク イメージで最適に動作するローカル SSD デバイスのインターフェースを選択してください。

書き込みキャッシュのフラッシュを無効にする

ファイルシステム、データベース、他のアプリケーションは、キャッシュのフラッシュを使用して、データがさまざまなチェックポイントで長期ストレージに確実に commit されるようにします。 ほとんどのストレージ デバイスでは、このデフォルトが理にかなっています。ただし、書き込みキャッシュのフラッシュは、ローカル SSD ではかなり低速です。このようなアプリケーションで自動フラッシュ コマンドを無効にすることにより、またはファイル システムレベルでフラッシュ オプションを無効にすることにより、一部のアプリケーションの書き込みパフォーマンスを向上させることができます。

ローカル SSD は、ファイル システムとアプリケーションに設定されたフラッシュ コマンドに関係なく、キャッシュされた書き込みを常に 2 秒以内にフラッシュします。したがって、一時的なハードウェアの障害によって失われる可能性があるのは、最大でもキャッシュされた 2 秒間の書き込みだけです。それでも、永続的なハードウェア障害が発生すると、データがフラッシュされるかどうかに関わらず、デバイス上のすべてのデータが失われる可能性があります。そのため、やはり重要なデータを永続ディスクまたは Cloud Storage バケットにバックアップする必要があります。

ext4 ファイル システムで書き込みキャッシュのフラッシュを無効にするには、マウント オプションまたは /etc/fstab エントリに、nobarrier を含めます。次に例を示します。

$ sudo mount -o discard,defaults,nobarrier /dev/[LOCAL_SSD_ID] /mnt/disks/[MNT_DIR]

[LOCAL_SSD_ID] は、マウントするローカル SSD のデバイス ID です。

ローカル SSD のパフォーマンスのベンチマーク

パフォーマンスのセクションで示されているローカル SSD のパフォーマンスの値は、ローカル SSD インスタンスで特定の設定を使用して達成されたものです。インスタンスがこれらのパフォーマンス上限に達することができず、ローカル SSD の推奨設定を使用してインスタンスをすでに設定してある場合は、Compute Engine チームによって使用されている設定を複製することで、パフォーマンスの実際の上限と公開されている上限を比較できます。

  1. ワークロードに応じて、デバイスごとに 4 個または 8 個の vCPU を備えるローカル SSD インスタンスを作成します。たとえば、4 個のローカル SSD デバイスがインスタンスに接続されている場合、16 vCPU のマシンタイプを使用する必要があります。

  2. 以下のスクリプトをマシンで実行します。このスクリプトは、前記の速度を達成するために使用された設定を複製します。--bs パラメータはブロックサイズを定義し、異なるタイプの読み書き操作の結果に影響を与えることに注意してください。

    # install dependencies
    sudo apt-get -y update
    sudo apt-get install -y build-essential git libtool gettext autoconf \
    libgconf2-dev libncurses5-dev python-dev fio
    
    # blkdiscard
    git clone git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
    cd util-linux/
    ./autogen.sh
    ./configure --disable-libblkid
    make
    sudo mv blkdiscard /usr/bin/
    sudo blkdiscard /dev/disk/by-id/google-local-ssd-0
    
    # full write pass - measures write bandwidth with 1M blocksize
    sudo fio --name=writefile --size=100G --filesize=100G \
    --filename=/dev/disk/by-id/google-local-ssd-0 --bs=1M --nrfiles=1 \
    --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \
    --iodepth=200 --ioengine=libaio
    
    # rand read - measures max read IOPs with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-ssd-0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=4 --rw=randread --blocksize=4k --group_reporting
    
    # rand write - measures max write IOPs with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-ssd-0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
    

フィードバックを送信...

Compute Engine ドキュメント