LoginSignup
4
3

More than 3 years have passed since last update.

Linuxで認識されているディスクの処理速度を簡単に測る方法

Posted at

TL;DR

OS やミドルウェアといった様々なレイヤーを扱っていても、ディスクの Read/Write 速度というものは必ずボトルネックになりえる要素として存在する。ディスクがボトルネックになっているか疑わしいと考えた時、簡易的にディスクのスループットを計測する方法を紹介。

  • ddコマンド、pv コマンドを利用することでディスクスループットが簡易的に計測することが可能

利用シーン

一例となりますが、ファイル圧縮処理を行う時に圧縮処理がなぜか遅い、といった場合等に紹介する方法での調査が有用だと考えます。

ディスクの Read スループットを計測する

dd コマンドを利用して計測対象のディスクを if に設定、 of/dev/null を指定することで Read スループットを計測することが可能です。ちなみに注意としては dd コマンドとなるため、あくまでシーケンシャルのアクセスになることを意識することが大事だと思います。

  • /dev/sda1 の Read スループットを計測する例
dd if=/dev/sda1 of=/dev/null bs=16k status=progress

出力は下記のような内容となります。

584122368 bytes (584 MB) copied, 4.61756 s, 127 MB/s

各コマンドにおける処理速度を計測する

上記で紹介した方法は、ほぼ純粋なディスク速度となります。ですが利用シーンの例にもある通り、例えば圧縮処理が遅いといった時に、それが純粋なディスク速度が遅いのか圧縮処理がボトルネックになっていて遅いのか切り分けたい場合があると思います。そのような場合に有効なのが各コマンドの処理速度を計測することができる pv コマンドとなります。

pv コマンドとは

pv コマンドはパイプ処理を実施する時に、パイプを渡るデータ量を計測するコマンドとなります。例えば、下記のような例がある場合 tar コマンドから lz4 コマンドへ渡るデータ量、すなわち tar コマンドの処理がどの程度の速度で実施されているか確認することができます。これによって、下記コマンドの実行速度がなぜか遅いといった場合に tar コマンドがボトルネックになっているのか、lz4 コマンドがボトルネックになっているか当たりをつけることができます。

tar -b 256 -cvf - /data/ | lz4 -c

使い方

下記のように計測したいパイプの間に pv コマンドを挟むことで計測することが可能です。

  • tar コマンドの速度を計測する例
tar -b 256 -cvf - /data/ | pv | lz4 -c > /dev/null
  • lz4 コマンドの速度を計測する例
tar -b 256 -cvf - /data/mysql/ | lz4 -c | pv > /dev/null

出力は下記のような内容となります。

8.66GiB 0:00:04 [2.19GiB/s] [  <=>           ]

おわりに

ディスクの性能を測る方法は数多くあると思いますが、今回は手軽に確認ができる方法として上記方法を紹介しました。ディスクへのアクセスもRead Write に加えて Random IO Sequential IO、速度の指標も IOPS Throughput というように様々な種類があるため、常に「今回はどのようなアクセスパターンが発生する処理なのか」等を意識するとボトルネックの発見に円滑に近づけたりすると思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3