クイックスタートガイド

このクイックスタートガイドは、主にLLVMテストスイートを使用してコンパイラをテストするためにLNTを使用することに関心のあるLLVM開発者を対象としています。

インストール

まず、LNTソフトウェア自体をチェックアウトしてインストールします。次の手順は、最新のUnix系システムであれば十分です。

  1. 必要に応じてvirtualenvをインストールします。

    sudo easy_install virtualenv
    

    virtualenvは、Pythonアプリケーションを独自のサンドボックス、つまり仮想環境にインストールするための標準的なPythonツールです。

  2. LNTアプリケーション用の新しい仮想環境を作成します。

    virtualenv ~/mysandbox
    

    これにより、~/mysandboxに新しい仮想環境が作成されます。

  3. LNTソースをチェックアウトします。

    git clone https://github.com/llvm/llvm-lnt.git ~/lnt
    
  4. 仮想環境にLNTをインストールします。

    ~/mysandbox/bin/python ~/lnt/setup.py develop
    

    ローカルで使用する場合、インストールではなくdevelopを使用することをお勧めします。これにより、LNTソースへの変更がインストールにすぐに反映されます。本番環境でのインストールを実行する場合、または安定性に非常に注意を払う場合は、installを使用できます。これはソースをコピーし、LNTアプリケーションを更新する場合は明示的に再インストールする必要があります。

以上です!

テストの実行

LNTを使用してLLVMテストスイートを実行するには、lnt runtestコマンドを使用します。以下の情報は開始するのに十分ですが、より完全なドキュメントについてはテストプロデューサセクションを参照してください。

  1. まだ行っていない場合は、LLVMテストスイートをチェックアウトします。

    git clone https://github.com/llvm/llvm-test-suite.git ~/llvm-test-suite
    

    テストスイートディレクトリ自体は常にクリーンに保つ必要があります(つまり、テストスイート内でconfigureを実行しないでください)。LLVMプロジェクトのディレクトリにチェックアウトしないでください。LLVMのconfigure/makeビルドは、自動的にconfigureしようとするためです。

  2. lnt runtest test-suiteテストプロデューサを実行し、テストスイートとテスト対象のコンパイラを指定します。

    lnt runtest test-suite \
      --sandbox /tmp/BAR \
      --cc ~/llvm.obj.64/Release+Asserts/bin/clang \
      --cxx ~/llvm.obj.64/Release+Asserts/bin/clang++ \
      --test-suite ~/llvm-test-suite \
      --cmake-cache Release
    

    SANDBOX値は、テストスイートのビルド製品と結果が保存されるパスです(デフォルトではタイムスタンプ付きディレクトリ内)。

    makeを使用している場合は--build-tool-options "-k"ninjaを使用している場合は--build-tool-options "-k 0"を追加することをお勧めします。これにより、テストの1つでコンパイルエラーが発生した場合でも、ビルドツールはビルドを続行します。これらのオプションがないと、コンパイルエラーが発生した後のすべてのテストはコンパイルされず、実行可能ファイルがないものとして報告されます。

  3. ほとんどのシステムでは、実行時間の結果は多少ノイズが多くなります。ノイズを減らすためにできることがいくつかあります(利用可能な場合は括弧内にLNT runtest test-suiteコマンドラインオプションを示します)。

    • ベンチマークのみを並列にビルドし、ベンチマークコードの実際の実行は一度に最大1つだけ行います。(--threads 1 --build-threads 6)。もちろん、測定されたコンパイル時間にも関心がある場合は、順次ビルドする必要があります。(--threads 1 --build-threads 1)。

    • Linuxで実行している場合:Linux perfを使用して、短時間実行のベンチマークのより正確なタイミングを取得するようにlntを使用します(--use-perf=1)。

    • 実行中のベンチマークを特定のコアに固定して、OSがベンチマークプロセスをコア間で移動しないようにします。(Linuxの場合:--make-param="RUNUNDER=taskset -c 1")。

    • ベンチマークとしてマークされているプログラムのみを実行します。テストスイートの一部のテストは、ベンチマークとして使用することを意図していません。(--benchmarking-only)。

    • 各プログラムを複数回実行して、LNTが本質的にノイズの多いプログラムを認識する可能性を高めます(--multisample=5)。

    • 周波数スケーリング/ターボブーストを無効にします。サーマルスロットリングが発生すると、結果が歪む可能性があります。

    • ターゲットシステムで可能な限り多くのプロセスまたはサービスを無効にします。

結果の表示

デフォルトでは、lnt runtest test-suiteは実行後に成功と失敗を表示しますが、結果データの詳細を表示する場合は、ローカルのLNTインスタンスをインストールして結果を送信する必要があります。

たとえば、次のようにしてローカルのLNTインスタンスを作成できます。

lnt create ~/myperfdb

これにより、LNTアプリケーションの構成と結果を保存するためのSQLiteデータベースを含む~/myperfdbにLNTインスタンスが作成されます。

ローカルインスタンスを作成したら、次のようにして結果を直接送信できます。

lnt import ~/myperfdb SANDBOX/test-<stamp>/report.json

または、実行の一部として次のように送信できます。

lnt runtest --submit ~/myperfdb nt ... arguments ...

データベースに結果を送信したら、次のようにしてLNT Web UIを実行できます。

lnt runserver ~/myperfdb

これにより、デフォルトでhttps://127.0.0.1:8000でサーバーが実行されます。

今後、LNTは、Web UIを使用せずにパフォーマンス結果を調査できるように、堅牢なコマンドラインツールのセットを拡張する予定です。