Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

レイテンシ最大のプロセスを特定するLatencyTOP

2008年09月29日 10:14 Ben Martin 1 2 3

 latencytopの基本的な使用法は、コマンドラインオプションを何も付けずに実行させることである。これによりLatencyTOPがcursesインタフェースで起動し、システム上でレイテンシ最大のプロセスに関する情報が、画面上で定期的に更新されるようになる。そうではなく-dオプションを付けて実行させると、LatencyTOPはその起動時にレイテンシが最大であったものを一覧して処理を終了する。同様に--blockオプションを付けて実行させると、ブロックIOに関するデバッグレベルメッセージがいくつか表示されるようになっている。

 cursesモードのLatencyTOPが受け付けるキー入力では、大文字と小文字は区別されない。たとえばRキーを押すと、画面表示のリセット、全プロセスを対象としたレイテンシ情報の更新、レイテンシが最大であるプロセスの特定と詳細情報の表示が行われる。LatencyTOP画面の下端には、水平方向にプロセス名が一覧されているが、これらはシステムで動作中のプロセスの一部であり、ユーザはこの中から関心のあるプロセスを任意に選択できるようになっている。そのためのキー操作は、XBCのいずれかのキーを押すと、プロセスID(PID)が1つ繰り上がり、ZADのいずれかのキーを押すとPIDが1つ繰り下がるというものだ。キーボード入力イベントの判定コードがどのような仕様となっているかは不明だが、PIDの繰り上げと繰り下げは上下左右の矢印キーでも行うことができる。いずれにせよ画面上で反転表示されているものが、現在選択中のプロセスである。なおLatencyTOPの終了操作にはQキーが割り当てられている。

 LatencyTOPの操作法で私が感じた不満の1つは、特定プロセスのレイテンシ情報を追跡させたい場合に、ユーザがRキーを押し続けないといけなくなることだ。例えばそうした目的で、レイテンシ情報をnミリ秒間隔にて自動更新させるというようなオプションが、どうしても見つからないのである。もっとも、システム上でレイテンシ最大のプロセス群の中から特定プロセスの動作状況を確認することが目的であれば、こうした不備は問題とならないかもしれない。その場合は、LatencyTOP上で目的のプロセスがピックアップされるまで、Rを何度か押せば済むはずだからだ。ところが私の場合、目的とするプロセスを矢印キーで選択したら、その後は当該プロセスのレイテンシ情報が定期的に更新される、という運用をしたいのである。

 下記の出力例は、ファイル名検索用のファイルシステムインデックスを作成するupdatedbコマンドについて出力されたレイテンシ情報である。このデータを取得したのは、updatedbによりXFSファイルシステムがスキャンされている途中であり、ここにはすべてのxfs_buf呼び出しのレイテンシ情報が一覧されている。なお末尾に表示されている行は、前述した矢印キーその他のキーボード操作で選択可能なPIDリストの抜粋である。

   LatencyTOP version 0.4       (C) 2008 Intel Corporation

Cause                                                Maximum     Percentage
xfs_buf_iowait xfs_buf_iostart xfs_buf_read_flags  76.3 msec         29.2 %
Walking directory tree                             56.8 msec          0.9 %
Reading directory content                          25.3 msec          1.0 %
Scheduler: waiting for cpu                         23.6 msec         24.6 %
xfs_buf_iowait xfs_buf_iostart xfs_buf_read_flags  20.7 msec         12.9 %
xfs_buf_lock _xfs_buf_find xfs_buf_get_flags xfs_b 19.1 msec          0.3 %
stat() operation                                   18.1 msec          0.1 %
opening cdrom device                               10.1 msec          0.9 %
Executing raw SCSI command                          8.2 msec          0.9 %
...

Process updatedb (7799)                    Total: 1232.8 msec
Scheduler: waiting for cpu                         23.6 msec         94.2 %
Reading directory content                          15.8 msec          2.1 %
xfs_buf_iowait xfs_buf_iostart xfs_buf_read_flags  13.0 msec          3.2 %_do_buf xfs_da_read_buf xfs_da_node_lookup_int xfs
xfs_buf_iowait xfs_buf_iostart xfs_buf_read_flags   2.7 msec          0.6 %obp xfs_iread xfs_iget_core xfs_iget xfs_dir_looku
p_int xfs_lookup xfs_vn_lookup do_lookup

...

...  ssh  ...  updatedb ...  bash
最終更新:2008年11月29日 17:07