Linuxでファイルシステムによってトリガされるディスク全体のアクティビティを取得するには?

Linuxでファイルシステムによってトリガされるディスク全体のアクティビティを取得するには?

オペレーティングシステムによって呼び出されたディスクアクセスアクティビティを記録したいと思います。私が書きたいデータは、ディスクセクタ番号、要求の長さ、到着時間、読み取りまたは書き込みなど、ディスクがオペレーティングシステムから受信するデータです。

具体的には、オペレーティングシステムはlinux、カーネルは3.xxx、ディスクファイルシステムはext4です。そのようなディスクアクセスアクティビティを記録するには、ext4ドライバを変更する必要があるかもしれません。

オペレーティングシステムはIntel i686のUbuntu 15.04 32ビットです。調査中で、デスクトップの I/O トレースを取得したいと思います。

答え1

ext4ドライバはディスクセクタやその他のディスク構造を担当せず、Linuxカーネルのブロックデバイスレイヤサブシステムを担当するため、ドライバがこれらすべての情報を取得できるかどうかはわかりません。私が知っている限り、あなたは低レベルの仕事と高レベルの読み書きに興味があるので、興味のあるすべての情報を得る方法はありませんが、一度見てください。ブロック追跡便利です。

答え2

あなたの質問は不明です。ネイティブディスクI / O分析が必要な場合(ファイルシステムは関係なく、スワップディスクIOも測定したい場合)、カーネルを設定またはパッチする必要があるかもしれません(方法はわかりません)。おそらく、ハイパーバイザー(例えばxen)を介してLinuxを実行すると便利です。また見てくださいoprofile

一方、ファイルシステムのアクティビティに興味がある場合は、次のものを使用できます。イノティファイ(7)。参考にしてください、ありがとうページキャッシュ、ファイルシステムアクティビティは、rawディスクアクティビティとは異なります。

答え3

これを達成するにはカーネルレベルのトレースが必要です。

さまざまなレベルの機能、使いやすさ、および安定性を備えたそれらを可能にする多数のツールがあります。sysdigftraceperfdtrace4linuxktapsystemtap他の人。

あなたはから得ることができますポイントtに基づいてftrace(スクリプト自体の外に)何もインストールする必要はありません。たとえば、次のようになります。

# tpoint -H ext4:ext4_da_write_end

さらに一歩進むには、Surveyを使用することをお勧めしますsystemtap

関連情報