system management
1748219 メンバー
4610 オンライン
108759 解決策
新規ポスト

ディスクアクセスの多いアプリケーションの特定方法

 
J_O
時折のアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

ある特定のディスクに瞬間的にアクセスが集中して、処理に待ちが発生しています。

ディスクI/Oの多いアプリケーションを特定することは、可能でしょうか。

なにとぞ、ご教示お願いします。

8件の返信8
まつ
アドバイザー

ディスクアクセスの多いアプリケーションの特定方法

私も知識が乏しいため、ご希望の情報を一発で調べる方法はわかりませんが、

・IOの発生しているディスク(ディレクトリやファイル)

・IOが発生しているタイミング

から調べられませんかね・・・・・?

「特定のディスク」と書かれているということはIOが集中している場所がわかっているということですか?

mfuji
時折のアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

fuserコマンドで、プロセスIDを特定でるので、

通常時と高負荷時を比較してみるのはどうでしょう?

例、

fuser -u /dev/vg00/lvol7

コマンド詳細は、「man fuser」で見れます。
masaakio65
レギュラーアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

glance を使うのが一番簡単ですけど持ってますか?

/opt/perf/bin/glance を実行するとプロセス一覧がでて、各プロセスのdisk io rate もでてきます。

初期状態だとthreshold がかかっていて、glance 起動直後の画面にプロセスがあまりでてこないので、 o を押してプロセスのthreshold を下げればたくさん一覧されます。

J_O
時折のアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

すばやい返信、ありがとうございました。

アクセスの集中しているディスクは特定できているのですが、アプリケーションおよびファイルの特定ができていないので、fuserコマンドはまだ使用できません。

そこでglanceに起動パラメータを指定してディスクI/Oを取得する方法をご教示お願いできますでしょうか。

(英語マニュアルしかないのでマニュアルの解析に時間がかかりそうなのでよろしくお願いします)

nadachi
レギュラーアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

Glanceが使える環境である、ということであれば。

/opt/perf/bin/glanceを起動して、ファンクションキーで を選びます。(これを出すには を押すと、新しい閾値が有効になり、その閾値を超えたprocessのみ表示されるようになります。(さらに "sort key " の部分に disk を指定しておけば、disk I/O rate でソートして表示してくれるはずです。)

これでしばらく見るのはいかが。

( でもこれだとずっと見ていなければならないのはしんどいですね。もう一工夫必要そうです。)

nadachi
レギュラーアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

Glanceが使える環境である、ということであれば。

例えば、以下のような内容のファイルをエディタで作り、仮に"disk.adv" という名前をつけます。

print "--", GBL_STATDATE, " ",BL_STATTIME

process loop {

if (PROC_DISK_LOGL_READ_RATE > 0 or PROC_DISK_LOGL_WRITE_RATE > 0) then

print PROC_PROC_NAME|16,

" read rate:",             

PROC_DISK_LOGL_READ_RATE|8,

" write rate:", PROC_DISK_LOGL_WRITE_RATE|8

}

そして、これを使って、例えば以下のようにglance

を起動します。

glance -j 5 -adviser_only -iterations 10

-syntax ./disk.adv

(1行のコマンドで、-j 5 ...5秒おき、

-iterations 10 ... 10回、

-adviser_only ... Adviser機能のみ使う

-syntax ./disk.adv ... "disk.adv" のファイルを

解釈実行。というオプションです。)

 すると、標準出力に例えば、

--08/04/04 13:36:40

pwgrd read rate: 2.8 write rate: 0.0

glance read rate: 72.8 write rate: 0.0

--08/04/04 13:36:45

sh read rate: 0.1 write rate: 0.1

glance read rate: 0.1 write rate: 0.0

ls read rate: 3.4 write rate: 0.0

なんて風に表示されます。

 このままですと閾値が 0 ですので、if文の条件を変えてやれば表示されるプロセスを絞りこめます。

また、5秒を10回、では短いなら-iterationにもっと大きい数字を指定します。

また、記録に残したいなら、標準出力をリダイレクトしてファイルに残しておけば、後でゆっくり調べられます。

参考まで。
nadachi
レギュラーアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

ごめんなさい。打ち間違いがあります。

print "--", GBL_STATDATE, " ",BL_STATTIME

の部分は

print "--", GBL_STATDATE, " ", GBL_STATTIME

の間違いです。
J_O
時折のアドバイザー

ディスクアクセスの多いアプリケーションの特定方法

ご意見、ありがとうございました。

参考にさせていただきます。