EN JP CN

分散解析の実行

分散解析の実行

注: この手順では、Klocwork 分散解析の bin ディレクトリをパスに追加したものと仮定します。Windows 上で、分散解析インストーラは、Klocwork bin ディレクトリをユーザーパス環境変数に追加します。

設定例はこのセクションの後にあります。

分散解析を実行するには、次の操作を実行します。

  1. Distributed Analysis Server を起動します。
     
    まだ実行していない場合は、Klocwork Distributed Analysis Server を kwdist で起動します。
     
    Distributed-Analysis-server-host$ kwdist [--port <port-number>]
    
     
    ここで <port-number> は、Klocwork Distributed Analysis Server を実行するポートです (デフォルト:3440) です。
  2. 1 つまたは複数の分散解析エージェントを登録します。
     
    解析負荷を共有するそれぞれのマシン上で、少なくとも 1 つの Klocwork Distributed Analysis Agent (未登録の場合) を kwagent で登録します。登録するエージェント数の決定については、下の '実行するエージェント数およびジョブ数に関するガイドライン' を参照してください。
     
    Agent-host$ kwagent --host <Distributed-Analysis-server-host> --port <Distributed-Analysis-server-port>
    
     
    フィールド
     
    <Distributed-Analysis-server-host> は、kwdist で Distributed Analysis Server を起動したホストです (デフォルト: localhost)。
     
    <Distributed-Analysis-server-port> は Distributed Analysis Server が実行されているポート番号です (デフォルト:3440) です。
  3. Klocwork 解析を起動します。
     
    Klocwork 統合ビルド解析を実行するマシン上で、次のオプションで kwbuildproject を実行します。
     
    Distributed Analysis Server により解析エンジンをリモートで実行する --remote です。
     
    Distributed Analysis Server ホストを指定する --dist-host (デフォルト: localhost)
     
    Distributed Analysis Server ポートを指定する--dist-port(デフォルト:3440) です。
     
    --jobs-num 並列コンパイルと実行する指摘検出プロセスの最大数を指定します。実行するジョブ数の決定については、下の '実行するエージェント数およびジョブ数に関するガイドライン' を参照してください。
     
    build-host$ kwbuildproject --tables-directory <tables_directory> --remote --dist-host <Distributed-Analysis-Server-host> --dist-port <Distributed-Analysis-Server-port> --jobs-num <int> <build-specification>
     
     
    build-host$ kwbuildproject --tables-directory /opt/Klocwork/work/krusader/build_1/tables --remote --dist-host server01.acme.com --dist-port 3460 --jobs-num 6 /usr/local/krusader-1.60.0/krusader.out
     
    Klocwork 統合ビルド解析の実行の詳細情報については、C/C++ 統合ビルド解析の実行を参照してください。
  4. Klocwork 解析を完了します。
     
    Klocwork データベースへの解析結果のロードを参照してください。
    注: 解析中と解析後に、コマンド kwdistadmin stat で、分散解析セッションのすべての統計を管理および取り出すことができます。kwdistadmin は、Distributed Analysis Server のホストで実行されます。

 

実行するエージェント数およびジョブ数に関するガイドライン

 

最適なパフォーマンスを得るには、次のガイドラインを使用して、推奨される分散解析エージェント数と実行する kwbuildproject ジョブ数を計算してください。

パフォーマンスは、ハードウェアの構成やオペレーティングシステム、ソフトウェアプロジェクトの複雑度、平均的なソースファイルのサイズなど、多くの要素によって異なることに注意してください。

注意

  • ビルドホストは、kwbuildproject が実行されるホストです。
  • --jobs-num オプションで、kwbuildproject ジョブの数を指定します。
  • --jobs-num オプションの "auto" 値は、分散解析ではサポートされていません。1 ~ 32 の整数を指定する必要があります。
 エージェント数ジョブ数
最小ビルドホストプロセッサ * 3エージェント + 1
最大ビルドホストプロセッサ * 6エージェント + 1

たとえば、4 コアビルドホストマシンの場合:

推奨最小値

  • エージェント数:12 (4 つのプロセッサー × ビルドホストプロセッサーあたり 3 つのエージェント)
  • ジョブ数:13

推奨最大値

  • エージェント数:24 (4 つのプロセッサー × プロセッサーあたり 6 つのエージェント)
  • ジョブ数:25

推奨するエージェントホスト数

Klocwork は、エージェントホストプロセッサコアあたり 1 つのエージェントを実行することを提案します。たとえば、24 のエージェントを実行するには:

  • クアッドコア エージェントホストマシン:6 (24 エージェント/ 4 プロセッサ)
  • デュアルコアエージェントマシン:12 (24 エージェント/ 2 プロセッサ)

 

設定例

 

次の図は、次のウォークスルーで使用する設定例を示しています。Distributed Analysis Server は、ビルドホストでも実行できることに注意してください。

Image:distributed_analysis_setup.jpg

 

例:分散解析の実行

 

この例では、4 コアビルドホストマシンです (kwbuildproject で実行しているマシン)。

このマシンがサポート可能な最大エージェント数とジョブ数を計算する必要があります。

  • ビルドホストプロセッサーの数を 6 で乗算して最大エージェント数を計算するため、最大エージェント数は 24 となります。
  • この数に 1 を足してジョブ数を計算するため、最大ジョブ数は 25 となります。

今度は、必要なエージェントホストマシンの数を計算する必要があります。

  • プロセッサーコアあたり 1 つのエージェントが推奨されたので、マシンが 4 コアマシンの場合、それぞれのホストで 4 つのエージェントを実行できます。つまり、6 台のリモートエージェントホストマシンが必要になります。

図で示すように、構成は次のようになります。

  • マシン A:Distributed Analysis Server のホスト (kwdist)
  • マシン B:ビルドホスト (kwbuildproject)
  • マシン C ~ H:リモートビルドホスト (kwagent)

これで、次の分散解析を実行できるようになりました。

  1. マシン A:Distributed Analysis Server を起動します。
     
    kwdist
     
    デフォルトポート 3440 でサーバーを実行しているため、--port オプションを指定する必要はありません。
  2. マシン C ~ H:6 つのリモートビルドホストのそれぞれの 4 つの分散解析エージェントを登録します。MachineA のホスト名は --host オプションで指定します。
     
    kwagent --host <MachineA>
  3. マシン B:Klocwork 解析を起動し、25 ジョブを指定します。
     
    kwbuildproject --tables-directory /opt/Klocwork/work/krusader/build_1/tables --remote --dist-host <MachineA> --jobs-num 25 /usr/local/krusader-1.60.0/krusader.out
  4. マシン B:データベースをロードすることで、Klocwork 解析を完了します。
     
    kwadmin load krusader1_60 /opt/Klocwork/work/krusader/build_1/tables

 

複数の Unix プラットフォームでの分散解析の実行

 

複数の Unix プラットフォームで Klocwork をインストールした場合、どのインストールからも Distributed Analysis Server を起動できます。また、分散解析エージェントは Linux、Solaris、AIX ホストで実行できます。

注意

  • Klocwork 分散解析インストールはすべて、同じファイルシステムで表示されなければなりません。Distributed Analysis Server は、さまざまなプラットフォームの C/C++ 解析エンジンにアクセスする必要があります。
  • Klocwork では、Klocwork ソフトウェアの同じバージョンのすべてのエージェントを実行することを推奨しています。そうでなければ、レポートに相違が生じ、どのエージェントにコンパイルされたソースファイルかによって、異なる指摘タイプが検出されます。

次の手順では、Linux とSolaris の例を使用します。

複数の Unix プラットフォームに対応した分散解析を設定するには:

  1. Klocwork に Linux をインストールしている場合は、次のファイルを開いて編集します。
     
    <Linux_Klocwork_dir>/config/compilation_kits.xml
    
  2. 2 番目の "キット" タグの "パス" 属性を編集して Solaris インストールへの絶対パスを含めます。
     
    <kit config="sparc-sun-solaris2" path="/opt/kw/developers/work/Klocwork_Solaris">
    
  3. 保存し、ファイルを閉じます。
  4. Klocwork に Solaris をインストールしている場合は、次のファイルを開いて編集します。
     
    <Solaris_Klocwork_dir>/config/compilation_kits.xml
    
  5. 1 番目の "キット" タグの "パス" 属性を編集して Linux インストールへの絶対パスを含めます。
     
    <kit config="ix86-pc-linux" path="/opt/kw/developers/work/Klocwork_Linux">
    
  6. コマンド kwdist で、解析サーバーを再起動します。
  7. コマンド kwagent で、解析エージェントを再起動します。

 

 

この例では、次の 2 つのインストールがあります。

  • /opt/kw/developers/work/Klocwork_Linux
  • /opt/kw/developers/work/Klocwork_Solaris

それぞれには、単一プラットフォームのバイナリが含まれています。

Linux インストールのcompilation_kits.xml を次のようにして編集します。

<?xml version="1.0"?>
<compilation_kits>
    <common_files>
        <file relative_path="plugins/builtin_ccxx_plugins.xml"/>
    </common_files>
    <kit config="ix86-pc-linux"> <!-- no path attribute here -->
        <file relative_path="exec/ix86-pc-linux/REPCXX"/>
        <file relative_path="plugins/ix86-pc-linux/kwsecliba.so"/>
        <file relative_path="plugins/ix86-pc-linux/kwseclibp.so"/>
    </kit>
    <kit config="sparc-sun-solaris2" path="/opt/kw/developers/work/Klocwork_Solaris">
        <file relative_path="exec/sparc-sun-solaris2/REPCXX"/>
        <file relative_path="plugins/sparc-sun-solaris2/kwsecliba.so"/>
        <file relative_path="plugins/sparc-sun-solaris2/kwseclibp.so"/>
    </kit>
</compilation_kits>

Solaris インストールの compilation_kits.xmlを次のようにして編集します。

<?xml version="1.0"?>
<compilation_kits>
    <common_files>
        <file relative_path="plugins/builtin_ccxx_plugins.xml"/>
    </common_files>
    <kit config="ix86-pc-linux" path="/opt/kw/developers/work/Klocwork_Linux">
        <file relative_path="exec/ix86-pc-linux/REPCXX"/>
        <file relative_path="plugins/ix86-pc-linux/kwsecliba.so"/>
        <file relative_path="plugins/ix86-pc-linux/kwseclibp.so"/>
    </kit>
    <kit config="sparc-sun-solaris2">  <!-- no path attribute here -->
        <file relative_path="exec/sparc-sun-solaris2/REPCXX"/>
        <file relative_path="plugins/sparc-sun-solaris2/kwsecliba.so"/>
        <file relative_path="plugins/sparc-sun-solaris2/kwseclibp.so"/>
    </kit>
</compilation_kits>

Solaris とLinux のインストールのどちらからでも Distributed Analysis Server を起動できます。どちらの場合にも、Solaris とLinux のエージェントのいずれかを使用できます。

 

Distributed Analysis Server またはエージェントの停止

 

Distributed Analysis Server を停止するには、コマンド kwdistadmin stop-server を使用します。

1 つまたは複数のエージェントを停止するには、コマンド kwdistadmin stop-agent を使用します。