快速入门指南¶
本快速入门指南专为主要对使用 LNT 测试使用 LLVM 测试套件的编译器感兴趣的 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
而不是 install,这样对 LNT 源代码的任何更改都会立即传播到您的安装中。如果您正在运行生产安装或非常关心稳定性,则可以使用install
,它将复制源代码,并且您需要在希望更新 LNT 应用程序时显式重新安装。
就这样!
运行测试¶
要使用 LNT 执行 LLVM 测试套件,您可以使用 lnt runtest
命令。以下信息应该足以让您入门,但有关更完整的文档,请参阅 测试生产者 部分。
检出 LLVM 测试套件,如果您尚未检出
git clone https://github.com/llvm/llvm-test-suite.git ~/llvm-test-suite
您应该始终保持测试套件目录本身是干净的(即,永远不要在您的测试套件内进行配置)。确保不要将其检出到 LLVM projects 目录中,因为 LLVM 的 configure/make 构建然后会想要自动为您配置它。
执行
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
)。这确保即使其中一个测试中存在编译失败,构建工具也会继续构建。如果没有这些选项,编译失败后的每个测试都不会被编译,并且将被报告为缺少可执行文件。在大多数系统上,执行时间结果会有点嘈杂。您可以采取一系列措施来减少噪声(使用 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 的情况下调查性能结果。