|
|
前のページ 1 2 3 4 次のページ
|
|
LKSTでカーネルの性能評価をしてみよう
|
では実際にLKSTを使って性能評価をしてみよう。ここでは、ベンチマーク(IOzone)を実行した時の性能評価方法を紹介する。説明は、LKSTを適用したOSが起動していることを前提に行う。インストール・再起動方法の説明は省略するので、実際に行う場合にはパッケージに同梱しているINSTALLドキュメントを参照して欲しい。
|
解析の準備 〜 その1
|
LKSTと、今回の情報収集に必要なLKST拡張イベントハンドラをロードする。これらのハンドラはすべてLKSTパッケージに同梱されている。LKSTをロードした瞬間からトレースが開始され、情報がデフォルトのバッファに格納される。
|
# /sbin/modprobe lkst
# /sbin/modprobe lksteh_procstat
# /sbin/modprobe lksteh_sysinfo
# /sbin/modprobe lksteh_wqcounter
|
|
解析の準備 〜 その2
|
マスクセット設定用スクリプトを実行し、解析用のマスクセットを作成する。以下のコマンドを入力し、システムコールとブロックIO時間を収集するマスクセット(log-mask)を作る。
|
# cd /usr/local/src/lkst-2.2.1/lkstlogtools/
# lkst_make_mask log-mask syscall biotime
|
|
解析の準備 〜 その3
|
「解析の準備 〜 その2」で作ったマスクセットをLKSTで使用する。
|
# lkstm set -n log-mask
|
|
解析の準備 〜 その4
|
デフォルトのバッファではサイズが小さいため、20MBのバッファをカーネル内に新たに生成する。
|
# lkstbuf create -s 20M
|
|
解析の準備 〜 その5
|
「解析の準備 〜 その4」で生成したバッファを使用し、バッファ内容をいったん空にする。
|
# lkstbuf jump -b 1
# lkstbuf read -f /dev/null
|
|
負荷生成と情報取得
|
ベンチマーク(IOzone)を実行して負荷を生成、その時のイベント情報をファイルに保存する。
|
# iozone -i 1 -+n -w -r 1M -s 32M -t 1 -F /tmp/testfile &
# lkstbuf read -f lkstlogdata
|
|
取得した情報の解析 〜 その1
|
ベンチマーク実行時間が多くかかっている時、どのシステムコールに多くの時間が使われているのか、それはなぜなのかを知りたいと思うだろう。その場合、実行されたシステムコールの開始から終了までの時間分布を取得する。
|
# lkstla syscall -s lkstlogdata-* > syscall.stat
|
上記統計データをグラフにするには以下のコマンドを実行する。
|
# lkst_plot_stat syscall.stat
|
コマンドの実行結果を図2示す。
|
図2:システムコール時間統計値の可視化例 (画像をクリックすると別ウィンドウに拡大図を表示します)
|
横軸は実行されたシステムコールの種類であり、棒グラフは実行回数である。折れ線グラフは実行時間の最大/最小/平均を示しており、システムコールが効率よく実行されているかどうか、例えば実行回数が多いが実行時間は短いのかどうかなどを確認することができる。また、実行回数は少ないのに平均実行時間が長い、もしくは最大実行時間が平均実行時間と不釣合いなほど長いというような、性能障害の危険性がありそうなシステムコールを知ることもできる。
したがって、その後はシステムコール内の処理を細かく分割してフックポイントを入れ、どこが遅いのかを再調査するなど、ポイントを絞って同様にLKSTで解析を深く掘り下げていくことができる。
そのひとつの例として、readシステムコールのカーネル内処理時間の評価方法を次に紹介する。
|
前のページ 1 2 3 4 次のページ
|
|
|
|
著者プロフィール
株式会社日立製作所 平松 雅巳
1996年大阪大学に入学。以来今に至るまで、優秀なハッカー達に囲まれて過ごしてきた。大学ではロボット制御を主に研究。2002年にシステム開発研究所に入所以降は、Linuxカーネル及びOSSに関連した研究開発に従事。LKSTのメンテナ。OSS関連のカンファレンスやコミュニティ活動にも参加している。
|
|
著者プロフィール
株式会社日立製作所 杉田 由美子
システム開発研究所に勤務。OS、コンパイラなどの研究開発を経て、90年代後半からシステムの高信頼化研究に着手。Linuxカーネルの研究は2001年から担当。現在もLinux/OSSを中心とした研究開発に従事。LKST/DAVLのメンテナ。OSS関連のコミュニティ活動にも参加し、普及にも取り組んでいる。
|
|
|
|