TOP設計・移行・活用> はじめに
OSS適用システムの障害解析ツール
OSS適用システムの障害解析ツール

第4回:MIRACLE LINUXによる実践的なLKSTの利用
著者:ミラクル・リナックス  武田 保真   2005/7/5
1   2  3  4  次のページ
はじめに

   前回、LKST v2.3で導入される性能評価機能によって、従来より簡単にカーネルの性能解析を実施することができることを紹介した。

   LKSTはSourceForge(http://lkst.sourceforge.net/)にてKernel 2.6用のパッチとして公開されている。ここで提供されているパッチは、オリジナルのKernel 2.6用のパッチであるため、一般的なディストリビューション用のカーネルに適用するためには、パッチが適用できるように手を加える必要がある。また、カーネルのビルドという作業が必要になるため、一般のユーザが使うには敷居が高いといえる。

   そのため、性能解析が必要な構築済みのシステムがあったとしても、利用中のカーネルにLKSTを組み込んで、障害解析に利用するというのは、現実的にはなかなか難しいといえる。また、実際のシステム環境としては、Kernel 2.4の環境がまだまだ主流であるといえる。

   そこで、今回の性能評価機能の開発にあたり、Kernel 2.4への対応も同時に行った。具体的には、今回開発した性能評価機能をMIRACLE LINUX V3.0用に移植し、この機能を利用するために必要なモジュールをすべてRPMパッケージに取り込むことによって、LKSTの性能評価機能をより利用しやすい環境を整えた。

   本記事では、MIRACLE LINUX V3.0を利用した実践的なLKSTの利用について紹介する。


Kernel 2.4への移植

   ミラクル・リナックスでは、「MIRACLE LINUX Standard Edition V2.1」からLKSTの組み込みを行っている。今回、ベースとなっている「MIRACLE LINUX V3.0 - Asianux Inside」では、LKST v2.0.1が既に組み込まれている。

   今回開発したLKST性能評価機能は、LKST v2.2がベースとなっているため、主に次の2つの作業を行う必要があった。

  • LKST v2.2のKernel 2.4への移植
  • MIRACLE LINUXのカーネル(kernel-2.4.21)に組み込んでいるLKSTのバージョンアップ

   実際に、MIRACLE LINUXへのLKST性能評価機能の移植に際して、次のような箇所に修正が必要であった。

  • LKST v2.2では、LKSTの実装においてKernel 2.6の機能を利用している箇所があり、LKSTのコアの実装をKernel 2.4用に変更する必要があった。特に、Kernel 2.6ではsysfsの導入に伴ってデバイスファイルの登録処理が変更されており、LKST v2.2でもsysfsに対応したコードとなっているため、Kernel 2.4用に修正を行う必要があった。
  • システムコールのエントリポイントがKernel 2.6とKernel 2.4で異なるため、LKSTのシステムコール関連のフックポイントとしてKernel 2.6用に追加されているSYSCALL_SYSENTER/SYSCALL_SYSEXITを削除し、SYSCALL_ENTRY/SYSCALL_EXITのみに変更する必要があった。
  • LKSTのフックポイントには、NORMAL形式とINLINE形式の2種類があり、複数の箇所で同じフックポイントを利用する場合には、INLINE形式を利用する必要がある。MIRACLE LINUX V3.0のKernelでは、メモリの確保や解放といったメモリ関連処理で、同じようなコードが何箇所かに分散されている。このような箇所で、オリジナルのLKST v2.2ではNORMAL形式のフックポイントが1箇所だけであったものを、INLINE形式に変更して複数箇所に追加する必要があった。
  • MIRACLE LINUXのカーネルに適用するためには、カーネルABIを維持する必要がある。LKST v2.3で追加されたタイマー関連の処理を組み込む際に、カーネルABIを維持するようにコードの変更が必要であった。

   また、ユーザランドのツールとして、従来のlkstutilsパッケージにlkstlaなどの性能評価用ツールを統合した。カーネルのシンボル情報の参照先をKernel 2.6の「/proc/kallsyms」から、Kernel 2.4で用いられる「/proc/ksyms」に変更するなどの変更を加えてある。


MIRACLE LINUX V3.0での利用

   MIRACLE LINUX V3.0用に作成したRPMは、以下のURLからダウンロード可能である。


   上記URLから「kernel-smp-2.4.21-20.19AX.lkst1.i686.rpm」および「lkstutils-2.2.1-11AX.i686.rpm」をダウンロードしてシステムにインストールを行う。

# rpm -ihv kernel-smp-2.4.21-20.19AX.lkst1.i686.rpm
# rpm -Uhv lkstutils-2.2.1-11AX.i686.rpm

   また、性能評価機能で取得したデータをグラフ化するために、gnuplotおよびAcrobat Readerが必要となるので、それぞれ、Developer CD、コンパニオン CDからインストールを行っておく。

   LKSTの操作に関しては、前回記事(第3回:Linuxカーネルの性能評価機能(LKST)とは)に簡単な説明があるため今回は割愛する。

1   2  3  4  次のページ

資料紹介
「OSSの性能・信頼性評価/障害解析ツール開発」報告書

本記事は、OSS推進フォーラム 開発基盤ワーキンググループによって公開されている「OSSの性能・信頼性評価/障害解析ツール開発」報告書を基に記事を掲載しています。報告書には、本記事で紹介した障害解析ツールのさらに詳しい情報が記載されています。
Javaアプリケーション層の評価、DB層の評価、OS層の評価の各報告書や付録、障害解析ツール開発に関する各報告書などが、OSS推進フォーラム 開発基盤ワーキンググループのホームページにて公開されています。

■「LKST(Linux Kernel State Tracer)によるカーネル性能評価ツールの開発」報告書(PDF形式/447KB)
http://www.ipa.go.jp/software/open/forum/Contents/DevInfraWG/lkstprospec-0316.pdf

■日本OSS推進フォーラム・開発基盤ワーキンググループホームページ
http://www.ipa.go.jp/software/open/forum/DevInfraWG.html
ミラクル・リナックス株式会社 武田 保真
著者プロフィール
ミラクル・リナックス株式会社   武田 保真
2001年入社。「MIRACLE LINUX Standard Edition V1.1」から製品開発に携わり今に至る。Samba、Kernelなどのパッケージメンテナンスを経て、最近はAsianuxプロジェクトでの製品開発が主な業務。気になったことにはすぐ手を出すために、一時期はインストーラも担当していたほど、ミラクルの何でも屋担当。


INDEX
第4回:MIRACLE LINUXによる実践的なLKSTの利用
はじめに
  LKSTのオーバーヘッド
  chatベンチ
  フックポイントの絞りこみ