ウェブサイト検索

LinuxサーバーのディスクとRAMの速度をテストする方法


定期的にファイルを読み書きしている場合、ディスクの速度がサーバーのパフォーマンスに影響を与えることがあります。サーバーの速度を測定する方法と、他の競合と比較してどのようになるかを理解する方法をお教えします。

I/O パフォーマンスはどのように測定されますか?

ディスクに読み書きする方法は多種多様であるため、測定できる「速度」に対して単一の数字は存在しません。

パフォーマンスを測定する最も簡単な方法は、大きなファイルを読み込むのにかかる時間や、大きなファイルのコピーを行うのにかかる時間を計測することです。これにより、連続読み取りおよび書き込み速度が測定され、これは知っておくべき良い指標ですが、特にサーバー環境では、実際にこれほど高い速度を見ることはほとんどありません。

より良い指標はランダムアクセス速度であり、これはランダムブロックに保存されたファイルにどれだけ早くアクセスできるかを測定し、実世界の使用法をはるかに模倣しています。

SSDは通常、ハードドライブと比較してランダムアクセス速度が速いため、一般的な使用に非常に適しています。ハードドライブはまだかなりの順次読み取りおよび書き込み速度を持っているため、データのアーカイブや取得に適しています。

しかし、ディスクのパフォーマンスは特定の作業負荷にとってそれほど重要ではないかもしれません。多くのアプリケーションはメモリにオブジェクトをキャッシュします(十分なRAMがある場合)、そのため次回そのオブジェクトを読み込む際には、メモリから読み込まれます(こちらの方が速いです)。ただし、書き込みが重視される作業負荷の場合、ディスクには依然としてアクセスする必要があります。

速度はしばしばMB/sで測定されますが、特定のプロバイダーはIOPS(1秒あたりの入出力操作数)で測定することがあります。これは単に同じ意味の大きな数字です。MB/sからIOPSを算出するには次の式を使用できます。

IOPS = (MBps / Block Size) * 1024

ただし、一部のプロバイダーはIOPSを測定するために使用しているベンチマークについて十分に説明しないことがあるため、自分でテストを行うことが重要です。

ランダム読み書きテストのためにfioをインストールする

Linuxには、連続書き込み性能を測定するために使用できる組み込みのddコマンドがありますが、実際のストレス下での挙動を示すものではありません。代わりに、ランダムな読み取りおよび書き込み速度をテストする必要があります。

fioはこれを処理できるユーティリティです。あなたのディストリビューションのパッケージマネージャからインストールしてください:

sudo apt-get install fio

それから、次のコマンドを使用して基本的なテストを実行します:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=250M --readwrite=randrw --rwmixread=80

これは250MBのデータを使用して、読み取り80%、書き込み20%の割合でランダムな読み取りおよび書き込みテストを実行します。結果はIOPSおよびMB/sの単位で表示されます:

上記のテストは、平均的なSSDであるAWS gp2 SSDで実行され、平均的なパフォーマンスを示しています。IOの種類に関わらず、書き込みパフォーマンスは常に低下します。多くのSSDやHDDにはドライブコントローラー用のキャッシュが内蔵されており、これにより多くの読み取りが比較的迅速に行われます。しかし、書き込みを行う際には、ドライブに物理的な変更を加える必要があり、これが遅くなります。

ハードドライブでテストを実行すると、低いランダムミックスIOパフォーマンスが示されます。これはハードドライブに共通する問題です。

ただし、ハードドライブは通常、大容量の連続読み書き用に使用されるため、ランダムIOテストはここでの使用例には適していません。テストタイプを変更したい場合は、--readwriteの異なる引数を渡すことができます。fioはさまざまなテストをサポートしています。

  • 逐次読み: seqread
  • 連続書き込み:seqwrite
  • ランダムリード: randread
  • ランダムライティング: randwrite
  • ランダムミックスIO: randrw

さらに、--bs引数を使用してブロックサイズを変更できます。私たちはそれを4Kに設定しましたが、これはランダムテストにはかなり標準的です。ただし、連続読み書きでは、より大きなブロックサイズでより良いまたは悪いパフォーマンスが得られる場合があります。サイズ16KBから32KBは、実際の負荷の下で遭遇するものに近いかもしれません。

メモリパフォーマンスのテスト

fioはRAMの速度をテストできないので、サーバーのRAMをベンチマークしたい場合は、ディストリビューションのパッケージマネージャーからsysbenchをインストールする必要があります。

sudo apt-get install sysbench

このパッケージは多くのパフォーマンス指標をベンチマークできますが、私たちはメモリテストにのみ焦点を当てています。以下のコマンドは1MBのRAMを割り当て、その後10GBのデータを書き込むまで書き込み操作を行います。(心配しないでください。このベンチマークを行うのに10GBのRAMは必要ありません。)

sysbench --test=memory --memory-block-size=1M --memory-total-size=10G run

これにより、メモリの速度がMiB/sで表示され、その関連するアクセスレイテンシも表示されます。

このテストは書き込み速度を測定しますが、--memory-oper=readを追加すると読み込み速度を測定できるようになり、通常は少し高くなるはずです。また、より小さいブロックサイズでテストすることもできますが、それはメモリにより多くの負荷をかけます。

現実的には、ほとんどのRAMはほとんどの作業をこなすには十分であり、通常は実際の速度よりもRAMの量によって制限されることが多いです。

関連記事: