|
|
前のページ 1 2 3 4
|
|
取得した情報の解析 〜 その2
|
ファイルのread性能にばらつきがある場合、カーネル内で何が起きているかを知りたいと思うだろう。その時には、任意の時間に発生したIO要求を抽出する。Syscall.logを取得し、readシステムコールが実行されている時間帯を調べ、その期間を「-t」オプションで指定する。
例えば1108.676061557から0.014634865秒間にreadシステムコール(システムコール番号3)が何度か実行されている場合、以下のように指定して情報を求める。
|
# lkstla syscall -l lkstlogdata-* > syscall.log
# lkstla syscall -k 3 -t1108.676061557+0.014634865 -l lkstlogdata-* > syscall.log
|
同じ時間帯のブロックIO処理時間を抽出する。
|
# lkstla biotime -t1108.676061557+0.014634865 -l lkstlogdata-* > biotime-trim.log
|
そして、以下のようにgnuplotを使い2つのデータを重ね合わせて表示する。
|
# gnuplot << EOF
> plot "syscall.log" using 3:4 title "syscall" with steps,
> "biotime-trim.log" using 3:4 title "biotime" with points
> EOF
|
結果を図3に示す。
図3:システムコールとBIOの処理時間の関係 (画像をクリックすると別ウィンドウに拡大図を表示します)
このグラフの点線で囲んだ部分に注目して欲しい。ブロックIOの処理時間(緑線)が増えた時にreadシステムコールの実行時間(赤線)も増えている。すなわち、IOスケジューラもしくはディスクのシーク時間を含むドライバ処理などに時間がかかっていると推測できる。
したがって次の調査として、LKSTを使ってIOスケジューラの性能を評価する、連続して読み込む2つのデータブロックの距離を調べる、Disk Allocation Viewer for Linux(DAVL)を使ってフラグメンテーションの状態を調べる、などを行い、その情報を解析していく方法が考えられる。
ちなみに、システムコール実行時間やブロックIO処理時間と同時に、連続して読む2つのデータブロックの距離を収集して調べると、以下の図4のような結果となった。
図4:データブロック間の距離を追加 (画像をクリックすると別ウィンドウに拡大図を表示します)
青い線がデータブロック間の距離を表している。同じく点線で囲んだ部分に注目してもらいたい。2つのデータブロックの距離が増えている時にブロックIOの処理時間も増えている。このことから、この性能劣化はデータブロック間の距離に関係していると言える。このファイルのフラグメンテーション状態はどうなっているのか、という話は、次々回のDisk Allocation Viewer for Linux(DAVL)の回に譲ることにする。
なお、このデータブロック間の距離を収集・解析する機能はまだ公開していない。LKST v2.3で提供する予定である。
以上、駆け足であったがLKST性能評価機能の概要と評価方法を紹介した。使用時のイメージをつかめて頂けたであろうか。
|
まとめ
|
LKSTの2つの機能、トレーサと性能評価を用いると、カーネルの動作や性能を知ることができる。例えば、今まではsarによって最小1秒間隔程度でしか取得できなかったカーネル内部の情報をLKSTによって詳細に記録することが可能になった。また処理の記録だけではなく、その記録から実行時間の統計や分布情報を取得できる。さらに、複数の関連処理の実行時間分布をひとつのグラフに重ね合わせ、視覚的に比較することも可能になった。このため特徴が捉えやすくなり、解析の時間を短縮できると考えている。
これまではトレース機能だけであり、解析にカーネルやアセンブラの深い知識が必要など、利用が難しかったかもしれない。しかし今回開発した性能評価機能は、用意されているアナライザを利用して手軽に計測を行うことができるので使いやすいと思う。ぜひ試して頂きたい。そしてLKSTのコミュニティへご意見をお寄せ頂き、さらには開発にも参加して頂きたいと願っている。
現在、LKSTはEM64Tプラットフォーム対応を進めている。近々、IA32でもEM64Tでも動作する、性能評価機能をマージしたLKST v2.3をリリースする予定である。LKSTが、皆様を悩ませている障害の解決に、少しでも役立てたら幸いである。
なお、この機能に関してはIPA(独立行政法人情報処理推進機構)および日本OSS推進フォーラム・開発基盤ワーキンググループ公開の「LKST(Linux Kernel State Tracer)によるカーネル性能評価ツールの開発」報告書でも報告している。以下のURLを参照して頂きたい。
|
http://www.ipa.go.jp/software/open/forum/Contents/DevInfraWG/ lkstprospec-0316.pdf
|
また、ソースコード(GPL)やマニュアルは以下のURLから公開されている。
|
http://lkst.sourceforge.net/
http://lkst.sourceforge.jp/
|
次回は、ミラクル・リナックス社の武田氏が、MIRACLE LINUX 3.0にLKSTをポーティングした時のノウハウと、LKSTのオーバヘッドについて報告する。また「オープンソースソフトウェアの性能・信頼性評価手法」の記事において、ミラクル・リナックス社の吉岡氏と五十嵐氏がLinux OSの信頼性評価について報告するが、その分析にもLKSTを用いているのでぜひそちらもご一読頂きたい。
最後に、LKSTの開発を支援し、LKSTのブラッシュアップにおいて多大なるアドバイスと協力をして下さったIPAおよび日本OSS推進フォーラム・開発基盤ワーキンググループの関係者各位に、この場をお借りして感謝の意を示したい。
|
前のページ 1 2 3 4
|
|
|
|
著者プロフィール
株式会社日立製作所 平松 雅巳
1996年大阪大学に入学。以来今に至るまで、優秀なハッカー達に囲まれて過ごしてきた。大学ではロボット制御を主に研究。2002年にシステム開発研究所に入所以降は、Linuxカーネル及びOSSに関連した研究開発に従事。LKSTのメンテナ。OSS関連のカンファレンスやコミュニティ活動にも参加している。
|
|
著者プロフィール
株式会社日立製作所 杉田 由美子
システム開発研究所に勤務。OS、コンパイラなどの研究開発を経て、90年代後半からシステムの高信頼化研究に着手。Linuxカーネルの研究は2001年から担当。現在もLinux/OSSを中心とした研究開発に従事。LKST/DAVLのメンテナ。OSS関連のコミュニティ活動にも参加し、普及にも取り組んでいる。
|
|
|
|