快速入门指南¶
本快速入门指南专为主要对使用 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 项目目录中,因为 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
)禁用频率缩放/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 的情况下调查性能结果。