DuckDB v2.0-dev 在 NVIDIA Vera 上的 TPC-H 基准测试
DataHot 速览
DuckDB 团队与 NVIDIA 合作,在 NVIDIA Vera CPU 上对 DuckDB v2.0-dev 预览版(1.6.0.dev379)运行完整 TPC-H 基准测试,规模因子为 1,000。测试对比 x86 基线(Intel Xeon 6)与 NVIDIA Vera,两台机器均配备 768 GB 内存、单块 3+ TB NVMe SSD,并运行 Ubuntu 26.04。Vera 具备 88 个 Olympus 核心、Spatial Multithreading 和最高 1.2 TB/s 内存带宽,且可直接运行 arm64 版 DuckDB 二进制而无需修改。原文公开了 duckdb-tpch 测试框架和复现脚本,用于评估该新硬件在分析型工作负载下的表现。
为什么值得关注:DuckDB 是热门嵌入式分析数据库,该基准展示了其在 arm64 新 CPU 上的 TPC-H 表现,并给出可复现环境,能帮助数据平台评估硬件成本与性能边界。
译文
AI 逐段翻译在 NVIDIA Vera 上对 DuckDB v2.0-dev 进行基准测试
2026-10-16 3 分钟阅读
Gábor Szárnyas
TL;DR:我们在缩放因子 1,000 上使用完整的 TPC-H 工作负载对 NVIDIA 的新款 Vera CPU 进行了全面测试。
我们喜欢在各种新硬件上运行基准测试。这通常包括 有些 奇特 的硬件——我们有时需要编译新的 DuckDB 二进制文件。这一次,我们与 NVIDIA 团队合作,拿到了他们面向智能体工作负载的新款 Vera 芯片。
NVIDIA Vera配备 88 个“Olympus”核心、空间多线程以及高达每秒 1.2 太字节(TB/s)的内存带宽。此外,Vera 运行 arm64 二进制文件——因此它可以无需任何修改地运行 DuckDB 的常规构建版本。
为了了解这款新硬件的性能表现,我们在缩放因子 1,000 上运行了完整的 TPC-H 基准测试(不只是读查询!)。我们的测试环境包括两个服务器平台:一个 x86 基准平台(Intel Xeon 6)和 NVIDIA Vera。
环境
系统设置
两台机器都运行 Ubuntu 26.04。它们的硬件配置包括 768 GB 内存和一块容量超过 3 TB 的单 NVMe SSD,格式化为 ext4。在撰写本文时,DuckDB v2.0 尚未发布,因此我们使用了一个 预览构建版本,即 1.6.0.dev379。
为了运行实验,我们使用了 duckdb-tpch 基准测试框架。要重新创建我们的基准测试环境,请参阅下面的脚本。
点击此处展开设置脚本。
# make sure you have the required toolssudo apt install git g++ cmake python3-pip
# clone the repository at the commit used for the experimentsgit clone https://github.com/duckdb/duckdb-tpch
cd duckdb-tpch
git reset --hard cf096cea8a0a054cefe0e695c842ca5bca6ec04d
# install the required Python dependenciespython3-m venv venv
source venv/bin/activate
python3-mpip install -r requirements.txt
python3-mpip install duckdb==1.6.0.dev379
# build the dbgen toolcd tpch_tools_3.0.1/dbgen/
make
cd ../..
# generate the dataset, query streams and update streamsexport SF=1000
./generate.sh
提示 为了高效地生成大规模 TPC-H 数据集,该仓库使用了出色的 tpchgen-cli 工具,它是 TPC-H 数据生成器的并行 Rust 重写版本。它还使用旧版生成器来产生更新流和查询流。 该工作负载规模相对较大(SF1,000),并且在吞吐量运行期间高度并发。为了从 DuckDB 获得最佳性能,我们设置了以下标志:
SETblock_allocator_memory='500G';SETallocator_background_threads=true;x86 基准平台:Intel Xeon 6
x86 基准环境使用的是 Intel Xeon 6 CPU。该 CPU 具有 96 个核心并支持 超线程,可提供 192 个线程。然而,我们发现 DuckDB 在使用 96 个线程时性能最佳,因此我们相应地进行了配置:
SETthreads=96;NVIDIA Vera
第二台机器搭载了 NVIDIA Vera CPU,它拥有 88 个核心并支持 空间多线程。我们在双路系统上进行了基准测试,但使用 numactl 命令将 DuckDB 限制在单个路:
numactl --cpunodebind=0 --membind=0 python3 benchmark.py
我们还固定了线程数:
SETthreads=88;基准测试运行与结果
我们进行了一次初始预热运行,并丢弃了其结果。然后,我们依次进行了三次完整运行,并取 QphH@Size 综合得分的中位数:
| x86 QphH@Size | Vera QphH@Size | |
|---|---|---|
| 第 1 次运行 | 2,120,588.82 | 3,073,292.99 |
| 第 2 次运行 | 2,022,795.01 | 3,131,306.27 |
| 第 3 次运行 | 2,109,782.19 | 3,052,102.87 |
| 中位数得分 | 2,109,782.19 | 3,073,292.99 |
结果表明,Vera 平台在 TPC-H SF1,000 上相比 x86 基准平台(Intel Xeon 6)具有 46% 的性能优势。事实上,如果我们通过官方 TPC-H 渠道审计这些结果,两者都有机会跻身 SF1,000 上 TPC-H 最佳性能结果 的前三名。
我们将 Vera 的性能优势归因于三个关键因素。首先,高内存带宽实现了快速扫描。其次,结合低内存延迟,它使核心在处理期间持续保持忙碌。最后,Olympus 核心的大缓存允许高效访问在聚合和连接期间构建的哈希表。
我们期待通过使用 DuckDB v2.0.0 的稳定构建版本、在完整的双路设置上运行并纳入不同的基准测试来继续这项基准测试工作。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏