快速入门指南

本快速入门指南专为主要对使用 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 构建将希望自动为您配置它。

  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

    • 禁用频率缩放/Turbo Boost。在发生热限制的情况下,它可能会歪曲结果。

    • 在目标系统上尽可能禁用许多进程或服务。

查看结果

默认情况下,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 Web UI:

lnt runserver ~/myperfdb

默认情况下,它在 https://127.0.0.1:8000 上运行服务器。

将来,LNT 将增加一套强大的命令行工具,以便在不使用 Web UI 的情况下调查性能结果。