来源:https://github.com/duckdb/duckdb/pull/24225
在 CI 中为 release 和 glibc CLI 构建启用 LTO - #24225
#24225
开启
smvv
希望将 8 个提交合并到
duckdb:main
从
smvv:lto-thin
+30
-6
变更行数:30 处添加和 6 处删除
对话 0 (0)
提交 8 (8)
检查 1 (1)
文件变更 4 (4)
对话
@smvv
smvv 评论于
2 小时前
·
成员
问题:https://github.com/duckdblabs/duckdb-internal/issues/4354。
先前尝试:https://github.com/duckdb/duckdb/pull/20221/changes。
GCC 13(linux-release)
运行时性能回退
- 数据摄取(Ingestion)性能回退。
- CSV 性能回退:几何平均:0.559s -> 0.918s(+64.1%)。
扩展二进制文件大小
| 名称 | 基础大小 | LTO 大小 | 缩减比例 |
|---|---|---|---|
| tpcds | 25.64 MiB | 23.07 MiB | 10.02% |
| fts | 14.61 MiB | 13.50 MiB | 7.60% |
| inet | 13.72 MiB | 12.54 MiB | 8.56% |
| tpch | 24.42 MiB | 21.84 MiB | 10.56% |
| icu | 23.78 MiB | 22.49 MiB | 5.44% |
| autocomplete | 13.47 MiB | 12.19 MiB | 9.54% |
| json | 40.92 MiB | 35.33 MiB | 13.66% |
| parquet | 21.22 MiB | 19.36 MiB | 8.75% |
| demo_capi | 0.02 MiB | 0.02 MiB | 0.34% |
| test_utils | 39.78 MiB | 34.76 MiB | 12.62% |
| core_functions | 32.20 MiB | 29.71 MiB | 7.73% |
| httpfs | 23.88 MiB | 22.02 MiB | 7.77% |
每个扩展的平均二进制文件大小减少了 8.55%。
待办事项
- 仅在主 CI 构建中启用 LTO。
- 将 LTO 标志添加到 linux-base。
- 弄清楚如果主 CI 使用 LTO,如何预热 PR CI 缓存。
@smvv
在 CI 中为 release 和 glibc CLI 构建启用 Thin LTO
66cfffa
@smvv smvv 于 2 小时前添加了 Do Not Review 标签
@github-actions github-actions 机器人于 2 小时前添加了 Member 标签
smvv 于 1 小时前添加了 2 个提交
@smvv
增加 GCC 的并行链接任务数
1f79526
@smvv
使用 6 个并行 LTO 任务
0728dcd
@smvv smvv 于 1 小时前将标题从"在 CI 中为 release 和 glibc CLI 构建启用 Thin LTO"更改为"在 CI 中为 release 和 glibc CLI 构建启用 LTO"
smvv 于 1 小时前添加了 3 个提交
@smvv
使用 8 个并行 LTO 任务
df5b1b2
@smvv
修复 release CLI 链接错误(缺少符号)
56a9bd6
@smvv
尝试使用 clang 20 进行带有 LTO 的 linux-release 构建
c9645b7
@smvv
smvv 于 24 分钟前将 lto-thin 分支从 259bc2f 强制推送到 c9645b7
smvv 于 2 分钟前添加了 2 个提交
@smvv
支持 clang LTO Thin 并行任务
84fc08e
@smvv
如果已安装,为 linux release 构建隐式启用 mold
7ece449