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

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

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

ディスクタイプのパフォーマンスの比較

インスタンスに対する適切なディスクタイプとサイズを決定するときは、ストレージのサイズとパフォーマンスの要件を検討します。特定のアプリケーションのパフォーマンス要件は、通常、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 25,000 400,000 680,000
書き込み IOPS/インスタンス 15,000 25,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 1,560 2,650
書き込みスループット/インスタンス 120 240 1,090 1,400

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

既存のデプロイで使用されているハードドライブの IOPS またはスループットをテストしたことがない場合、永続ディスクのパフォーマンスを検討するときに、追加のコンテキストが必要になることがあります。次の表は、7200 RPM SATA ドライブと同等のパフォーマンス(一般的には 75 IOPS または 120 MB/秒)を得るために必要なボリューム サイズを示しています。

IO パターン 一般的な 7200 RPM SATA ドライブと同等のボリューム サイズ
小規模でランダムな読み取り 75 IOPS 250 GB
小規模でランダムな書き込み 75 IOPS 50 GB
120 MB/秒ストリーミング読み取り 1,000 GB
120 MB/秒ストリーミング書き込み 1,333 GB

標準的な 7200 RPM SATA ドライブと同等の最適なパフォーマンスを得るために必要なボリュームのサイズを決定するには、最初にボリュームの I/O パターンを明らかにする必要があります。次の表では、いくつかの I/O パターンと、その I/O パターンのために作成する必要のある各永続ディスクタイプのサイズを示します。

IO パターン 標準永続ディスクのボリューム サイズ(GB) ソリッドステート永続ディスクのボリューム サイズ(GB)
小規模でランダムな読み取り 250 3
小規模でランダムな書き込み 50 3
大量のストリーミング読み取り 1,000 250
大量のストリーミング書き込み 1,333 250

サイズとパフォーマンスの関係

永続ディスクのパフォーマンスは、VM ごとの最大値に達するまで、ボリューム サイズと共に上昇します。ボリューム サイズに合わせてパフォーマンスが上昇するのは標準永続ディスクも SSD 永続ディスクも同じですが、SSD 永続ディスクの方が速く上昇します。

標準永続ディスク

標準永続ディスクの持続的パフォーマンスの上限は、ボリューム サイズを増やしていくことで最大パフォーマンスに達するまで上げることができます。ここで言うパフォーマンスの上限とは、ディスクに対する持続的なアクティビティについてである、ピーク時の IO レートではありません。多くのアプリケーションで IO の急増が発生する可能性があります。このため、Compute Engine では、サイズが 1 TB 未満のボリュームについて、公式の上限を超える短時間の IO 急増を許可しています。急増が収まると、IO レートは公式の上限に戻ります。このバースト能力により、ピーク時ではなく持続的なレートに基づいてボリュームを選択できるようになります。これにより、IO が急増するワークロードのコストを持続的に削減できます。

100 GB の標準永続ディスク ボリュームに対する各 IO パターンでのパフォーマンスの上限を、次の表に示します。

最大持続 IOPS/100 GB 最大持続スループット/100 GB 最大持続スループット/VM
読み取り 75 IOPS 12 MB/秒 180 MB/秒
書き込み 150 IOPS 12 MB/秒 120 MB/秒

標準永続ディスクの IOPS パフォーマンス上限は、最小の 1 GB ディスクから 10 TB ディスクまでは、ディスクのサイズと共に直線的に上昇しますが、10 TB を超えるボリュームについては上昇しません。10 TB から 64 TB までのボリュームの IOPS パフォーマンス特性は同じです。ボリュームごとのランダムな少量の読み取りに 60 IOPS しか必要ない場合は、200 GB の標準永続ディスクで十分です。少量のランダム読み取りに 600 IOPS が必要な場合は、少なくとも 2 TB のボリュームを購入する必要があります。

最大スループットも、10 TB のディスクサイズまではボリューム サイズとともに増加します。しかし、10 TB から 64 TB までのすべてのボリューム サイズについてはスループット パフォーマンスは同じです。

各 IO パターンについて、読み取りまたは書き込みの上限が示されています。読み取りと書き込みを同時に行うときは、上限がスライドします。読み取りが多くなると書き込みは減少し、書き込みが増加すると読み取りは減少します。

読み書きを同時に行った場合の IOPS の上限の例を次に示します。

読み取り 書き込み
3,000 IOPS 0 IOPS
2,250 IOPS 3,750 IOPS
1,500 IOPS 7,500 IOPS
750 IOPS 11,250 IOPS
0 IOPS 15,000 IOPS

読み書きを同時に行った場合のスループットの上限の例を次に示します。

読み取り 書き込み
180 MB/秒 0 MB/秒
135 MB/秒 30 MB/秒
90 MB/秒 60 MB/秒
45 MB/秒 90 MB/秒
0 MB/秒 120 MB/秒

SSD 永続ディスク

SSD 永続ディスクのパフォーマンスは、ボリュームのサイズと共に上昇します。標準永続ディスクより SSD 永続ディスクの方が、IOPS パフォーマンスは速く上昇します。スループットは、同じ速さで上昇します。

100 GB の SSD 永続ディスク ボリュームに対する各 IO パターンでのパフォーマンスの上限を、次の表に示します。

予想 IOPS/100 GB 予想スループット/100 GB 最大持続スループット/VM
読み取り 3,000 IOPS 48 MB/秒 240 MB/秒
書き込み 3,000 IOPS 48 MB/秒 240 MB/秒

SSD 永続ディスクのスループットの VM あたりの上限は、読み取りで 240 MB/秒、書き込みで 240 MB/秒です。一般に、VM が大きいほど、帯域幅が高くなります。

SSD 永続ディスクの IOPS の上限

標準永続ディスクは、大半のマシンタイプとコア数で安定したパフォーマンスを提供しますが、SSD 永続ディスクの場合には、コア数の多いインスタンスのほうが IOPS のパフォーマンスが向上します。

インスタンス コア数 SSD PD 読み取りまたは書き込みの IOPS の上限 上限に達するのに必要な SSD PD サイズ
15 以下のコア 15,000 IOPS 500 GB
16~31 コア 20,000 IOPS 667 GB
32 コア 25,000 IOPS 834 GB

既存のインスタンスでこのパフォーマンスを実現するには、インスタンスのマシンタイプを変更して VM あたりの上限を増やし、永続ディスクのサイズを変更して、永続ディスクごとの IOPS を増やしてください。

永続ディスクのサイズ、価格、パフォーマンスの概要

アプリケーションに適したボリュームのタイプとサイズを決定するときは複数の要素を検討する必要がありますが、そのうちの 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 上限またはインスタンスのマシンタイプの上限まで上がる可能性があります。 SSD 永続ディスクは IOPS の上限(25,000 回のランダム読み取りまたはランダム書き込み)に 834 GB で到達します。標準永続ディスクの場合、ランダム読み取りの IOPS の上限(3,000 回)に 4 TB で、ランダム書き込みの IOPS の上限(15,000 回)に 10 TB で到達します。

次の表に、一般的な標準永続ディスクのボリューム サイズのパフォーマンスとコストをまとめます。

ボリューム サイズ(GB) 月額 持続的ランダム読み取り IOPS の上限 持続的ランダム書き込み IOPS の上限 持続的読み取りスループットの上限(MB/秒) 持続的書き込みスループットの上限(MB/秒)
10 $0.40 * * * *
50 $2 37.5 75 6 6
100 $4 75 150 12 12
200 $8 150 300 24 24
500 $20 375 750 60 60
1,000 $40 750 1,500 120 120
2,000 $80 1,500 3,000 180 120
4,000 $160 1,500 3,000 180 120
5,000 $200 3,000 7,500 180 120
10,000 $400 3,000 15,000 180 120
16,000 $640 3,000 15,000 180 120
32,000 $1,280 3,000 15,000 180 120
64,000 $2,560 3,000 15,000 180 120

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

次の表に、一般的な SSD 永続ディスクのボリューム サイズのパフォーマンスとコストをまとめます。

ボリューム サイズ(GB) 月額 持続的ランダム読み取り IOPS の上限 持続的ランダム書き込み IOPS の上限 持続的読み取りスループットの上限(MB/秒) 持続的書き込みスループットの上限(MB/秒)
10 $1.70 1,500 1,500 24 24
50 $8.50 1,500 1,500 24 24
100 $17.00 3,000 3,000 48 48
200 $34.00 6,000 6,000 96 96
500 $85.00 15,000 15,000 240 240
667 $113.39 20,000 20,000 240 240
834 $141.78 25,000 25,000 240 240
1,000 $170.00 25,000 25,000 240 240
5,000 $850.00 25,000 25,000 240 240
10,000 $1,700.00 25,000 25,000 240 240
16,000 $2,720.00 25,000 25,000 240 240
32,000 $5,440.00 25,000 25,000 240 240
64,000 $10,880.00 25,000 25,000 240 240

次の一連の例では、パフォーマンスの要件に応じた永続ディスクサイズの選択方法を示します。

例 1

データベースのインストール環境(小規模なランダム IO)で、ランダム書き込みの最大レートとして 300 IOPS が必要であるものとします。

標準永続ディスク

(100 GB / 150 IOPS) x 300 IOPS = 200 GB

200 GB x $0.04/GB = $8/月

SSD 永続ディスク

(100 GB / 3,000 IOPS) x 300 IOPS = 10 GB

10 GB x $0.170/GB = $1.70/月

したがって、ランダム書き込みパフォーマンスが主要な要件である場合は、200 GB 以上の標準永続ディスクまたは 10 GB 以上の SSD 永続ディスクを購入します。

SSD 永続ディスクの方が安価です。

例 2

データベースのインストール環境(小規模なランダム IO)で、持続的ランダム読み取りの最大レートとして 450 IOPS が必要であるものとします。

標準永続ディスク

(100 GB / 30 IOPS) x 450 IOPS = 1,500 GB

1,500 GB x $0.04/GB = $60/月

SSD 永続ディスク

(100 GB / 3,000 IOPS) x 450 IOPS = 15 GB

15 GB x $0.170/GB = $2.55/月

したがって、ランダム読み取りパフォーマンスが主要な要件である場合は、1,500 GB 以上の標準永続ディスクまたは 15 GB 以上の SSD 永続ディスクを購入します。

SSD 永続ディスクの方が安価です。

例 3

データ ストリーミング サービス(大規模な IO)で、持続的読み取りスループットの最大レートとして 120 MB/秒が必要であるものとします。

標準永続ディスク

(100 GB / 12 MB/秒) x 120 MB/秒 = 1,000 GB

1,000 GB x $0.04/GB = $40/月

SSD 永続ディスク

(100 GB / 48 MB/秒) x 120 MB/秒 = 250 GB

250 GB x $0.170/GB = $42.50/月

したがって、読み取りスループットが主要な要件である場合は、1,000 GB 以上の標準永続ディスクまたは 250 GB 以上の SSD 永続ディスクを購入します。

標準永続ディスクの方が安価です。

例 4

データベースのインストール環境(小規模なランダム IO)で、持続的ランダム読み取りの最大レートとして 450 IOPS、持続的ランダム書き込みの最大レートとして 300 IOPS が必要であるものとします。全体的な持続的パフォーマンス要件を満たすため、両方を満たすパフォーマンス要件を持つボリュームを作成します。

上記の例 1 と 2 から次のようになります。

標準永続ディスク

200 GB + 1,500 GB = 1,700 GB

1,700 GB x $0.04/GB = $68/月

SSD 永続ディスク

10 GB + 15 GB = 25 GB

25 GB x $0.17/GB = $4.25/月

したがって、ランダムな読み取りと書き込みのパフォーマンスが主要な要件である場合は、1,700 GB 以上の標準永続ディスクまたは 25 GB 以上の SSD 永続ディスクを購入します。

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

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

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

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

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

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

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

1 コアの最大書き込み 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 1024 x 1024)です。

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 永続ディスクのパフォーマンスを最適化する

ディスクタイプ別パフォーマンスの表では、ソリッドステート永続ディスクの予想される達成可能なパフォーマンスの値が示されています。アプリケーションと仮想マシンのインスタンスを最適化してこれらの値を達成するには、次のガイドラインに従ってください。

  • アプリケーションが十分な 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 が必要です。

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

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

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

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

ローカル SSD を最適化する

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

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

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

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

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

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

  2. 以下のスクリプトをマシンで実行します。このスクリプトは、前記の値を達成するために使用された設定を複製します。

    # 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
    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
    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
    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 ドキュメント