快速入門指南

本快速入門指南適用於主要對使用 LNT 來測試使用 LLVM 測試套件的編譯器感興趣的 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 而不是 install,以便對 LNT 原始碼的任何更改都能立即傳播到您的安裝。如果您正在執行生產安裝或非常關心穩定性,則可以使用 install,它將複製原始碼,並且您需要在想要更新 LNT 應用程式時明確地重新安裝。

就是這樣!

執行測試

要使用 LNT 執行 LLVM 測試套件,請使用 lnt runtest 命令。以下資訊應該足以讓您開始使用,但請參閱 測試產生器 章節以獲取更完整的說明文件。

  1. 簽出 LLVM 測試套件(如果您尚未執行)

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

    您應該始終保持測試套件目錄本身乾淨(也就是說,永遠不要在測試套件中執行設定)。確保不要將其簽出到 LLVM 專案目錄中,因為 LLVM 的 configure/make build 之後會想要自動為您設定它。

  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 值是指向測試套件構建產品和結果將存放的路徑(預設情況下位於帶時間戳記的目錄中)。

    建議您添加 --build-tool-options "-k"(如果您使用的是 make)或 --build-tool-options "-k 0"(如果您使用的是 ninja)。這確保了即使其中一個測試中出現編譯失敗,構建工具也會繼續構建。如果沒有這些選項,則編譯失敗後的所有測試都不會被編譯,並且會被報告為缺少可執行文件。

  3. 在大多數系統上,執行時間結果會有些雜亂。您可以採取一系列措施來減少雜訊(在括號中顯示可用的 LNT runtest test-suite 命令列選項)

    • 僅並行構建基準測試,但最多一次只運行一個基準測試程式碼。(--threads 1 --build-threads 6)。當然,當您還對測量的編譯時間感興趣時,您也應該按順序構建。(--threads 1 --build-threads 1)。

    • 在 Linux 下運行時:讓 lnt 使用 linux perf 來獲得更準確的短期基準測試時間(--use-perf=1

    • 將正在運行的基準測試固定到特定的核心,這樣作業系統就不會將基準測試程序從一個核心移動到另一個核心。(在 Linux 下:--make-param="RUNUNDER=taskset -c 1"

    • 僅運行標記為基準測試的程序;測試套件中的一些測試並非用作基準測試。(--benchmarking-only

    • 確保每個程序都運行多次,以便 LNT 有更大的機會識別哪些程序本身就存在雜訊(--multisample=5

    • 停用頻率調整/渦輪增壓。如果出現過熱降頻,可能會扭曲結果。

    • 在目標系統上停用盡可能多的程序或服務。

檢視結果

默認情況下,lnt runtest test-suite 會在運行後顯示通過和失敗,但如果您有興趣更詳細地檢視結果數據,則應安裝本地 LNT 實例以提交結果。

您可以使用以下命令建立本地 LNT 實例,例如

lnt create ~/myperfdb

這將在 ~/myperfdb 中建立一個 LNT 實例,其中包含 LNT 應用程式的配置和用於儲存結果的 SQLite 數據庫。

建立本地實例後,您可以使用以下命令直接提交結果

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

或作為運行的一部分提交

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

將結果提交到數據庫後,您可以使用以下命令運行 LNT 網站介面

lnt runserver ~/myperfdb

默認情況下,它會在 https://127.0.0.1:8000 上運行伺服器。

未來,LNT 將發展出一套強大的命令列工具,以便在不必使用網站介面的情況下調查效能結果。