クイックスタートガイド¶
このクイックスタートガイドは、主にLLVMテストスイートを使用してコンパイラをテストするためにLNTを使用することに関心のあるLLVM開発者を対象としています。
インストール¶
まず、LNTソフトウェア自体をチェックアウトしてインストールします。次の手順は、最新のUnix系システムであれば十分です。
必要に応じて
virtualenv
をインストールします。sudo easy_install virtualenv
virtualenv
は、Pythonアプリケーションを独自のサンドボックス、つまり仮想環境にインストールするための標準的なPythonツールです。LNTアプリケーション用の新しい仮想環境を作成します。
virtualenv ~/mysandbox
これにより、
~/mysandbox
に新しい仮想環境が作成されます。LNTソースをチェックアウトします。
git clone https://github.com/llvm/llvm-lnt.git ~/lnt
仮想環境にLNTをインストールします。
~/mysandbox/bin/python ~/lnt/setup.py develop
ローカルで使用する場合、インストールではなく
develop
を使用することをお勧めします。これにより、LNTソースへの変更がインストールにすぐに反映されます。本番環境でのインストールを実行する場合、または安定性に非常に注意を払う場合は、install
を使用できます。これはソースをコピーし、LNTアプリケーションを更新する場合は明示的に再インストールする必要があります。
以上です!
テストの実行¶
LNTを使用してLLVMテストスイートを実行するには、lnt runtest
コマンドを使用します。以下の情報は開始するのに十分ですが、より完全なドキュメントについてはテストプロデューサセクションを参照してください。
まだ行っていない場合は、LLVMテストスイートをチェックアウトします。
git clone https://github.com/llvm/llvm-test-suite.git ~/llvm-test-suite
テストスイートディレクトリ自体は常にクリーンに保つ必要があります(つまり、テストスイート内でconfigureを実行しないでください)。LLVMプロジェクトのディレクトリにチェックアウトしないでください。LLVMのconfigure/makeビルドは、自動的にconfigureしようとするためです。
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つでコンパイルエラーが発生した場合でも、ビルドツールはビルドを続行します。これらのオプションがないと、コンパイルエラーが発生した後のすべてのテストはコンパイルされず、実行可能ファイルがないものとして報告されます。ほとんどのシステムでは、実行時間の結果は多少ノイズが多くなります。ノイズを減らすためにできることがいくつかあります(利用可能な場合は括弧内に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を使用せずにパフォーマンス結果を調査できるように、堅牢なコマンドラインツールのセットを拡張する予定です。