快速入门指南

本快速入门指南专为主要对使用 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 projects 目录中,因为 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)

    • 禁用频率缩放/睿频加速。如果发生热节流,可能会使结果倾斜。

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

查看结果

默认情况下,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 的情况下调查性能结果。