资讯动态

Neon pageserver 怎么运行 cargo bench 层地图与 WAL 重做基准测试

发布时间:2026/9/14 12:22:35 来源:尧图企业网站定制
Neon pageserver 怎么运行 cargo bench 层地图与 WAL 重做基准测试【免费下载链接】neonNeon: Serverless Postgres. We separated storage and compute to offer autoscaling, code-like database branching, and scale to zero.项目地址: https://gitcode.com/GitHub_Trending/ne/neonNeon 仓库的 pageserver 自带两组 criterion 基准bench_layer_map 测量层地图LayerMap查询性能bench_walredo 测量 WAL 重做管理器在多并发调用者下的吞吐。两组基准都能用cargo bench直接运行运行方式记录在 pageserver/benches/README.md。本文按「装依赖 → 构建 Postgres 二进制walredo 基准才需要→ 分别跑两组基准 → 读输出」的顺序给出完整操作路径。安装构建依赖与工具链运行基准前需要按根 README.md 准备构建环境。Ubuntu/Debian 上文档给出的完整包集是apt install build-essential libtool libreadline-dev zlib1g-dev flex bison libseccomp-dev \ libssl-dev clang pkg-config libpq-dev cmake postgresql-client protobuf-compiler \ libprotobuf-dev libcurl4-openssl-dev openssl python3-poetry lsof libicu-devFedora 与 Arch 有对应的dnf/pacman包集见 README.md 的同一章节。两点额外注意构建 Neon 需要 3.15 以上版本的protoc发行版提供的版本过旧时需要自行安装更新版本需要 Rust 工具链README 推荐用 rustup 安装。构建 Postgres 二进制到 pg_install/仅 WAL redo 基准需要bench_walredo会真实执行 WAL redoredo 进程运行的是postgres可执行文件由 pageserver 拉起并置于 WAL-redo 模式见 docs/pageserver-walredo.md。基准代码通过PageServerConf::dummy_conf构造配置其中pg_distrib_dir固定指向仓库内的../pg_install见 pageserver/src/config.rs。因此在仓库根目录执行make postgres该目标等价于postgres-installpostgres.mk把随仓库 vendored 的 PostgreSQL 源码编译并安装到pg_install/POSTGRES_INSTALL_DIR的默认值见 Makefile。它只在仓库内产出构建物不会改动系统环境。只跑层地图基准可以跳过这一步bench_layer_map是纯 Rust 代码数据来自仓库内的 fixture 文件不依赖 Postgres 二进制。运行层地图基准pageserver/benches/README.md 给出的命令# 运行 pageserver 包的全部基准 cargo bench # 运行指定基准文件 cargo bench --bench bench_layer_map # 只运行其中某个基准函数 cargo bench --bench bench_layer_map -- real_map_uniform_queries在 workspace 根目录直接cargo bench会连同其他包的基准一起跑其他包的基准 README例如 libs/utils/benches/README.md都示范了用--package限定包因此只跑 pageserver 的基准可以写成cargo bench --package pageserver。bench_layer_map的输入与基准分组来自 bench_layer_map.rs层地图数据从 pageserver/benches/odd-brook-layernames.txt 逐行读取 layer 文件名构建LayerMap。源码注释说明这份元数据提取自多次运行 pgbench 的性能测试环境也来自一个层地图查询耗时过长的真实项目。查询模式uniform_query_pattern对每个 image layer 取层内一个 key、并以该 image layer 创建前的 LSN 发起查询借此在 key 与 LSN 空间上获得较均匀的覆盖。四个 criterion groupcaptest_uniform_queries对上面的均匀查询逐一执行layer_map.searchcaptest_rel_dir_query用单个 RelDir key、高于树中所有 LSN 的 LSN 查询。real_map基准函数uniform_queries同一份 odd-brook 层列表上的均匀查询。sequential基准函数uniform_queries合成数据100_000 个 image layer 排成 1000 条对角线配 100 个随机查询。visibility用sequential、real_map、real_map_many_branches三组读点集合测量layer_map.get_visibility。运行 WAL redo 基准用 README 中「运行指定基准文件」的同样形式运行 walredo 基准bench_walredo是 pageserver/Cargo.toml 中声明的[[bench]]目标cargo bench --bench bench_walredobench_walredo.rs 开头的注释说明了它测量什么单个 walredo manager 在 N 个并发调用者下的吞吐。具体组合是redo 工作三种ping仅协议 ping不重放记录、short约 1132 字节载荷的真实 redo、medium序列化后约 26393 字节的真实 redo并发调用者数nclients取[1, 2, 4, 8, 16, 32, 64, 128]n_redos由 criterion 通过iter_custom决定输出的「time per iteration」即一次 redo 的耗时。只跑其中一个组合时沿用 README 末尾过滤参数这种形式基准 ID 用输出中出现的组名/并发数# 只跑 ping 组 cargo bench --bench bench_walredo -- ping # 只跑 ping/1 这一个用例 cargo bench --bench bench_walredo -- ping/1如何判断基准跑完了、结果怎么看构建阶段bench_layer_map在加载 odd-brook 层列表时会打印层列表中出现的 min/max LSN并打印 layer map 初始化耗时如Finished layer map init in ...。criterion 输出每个基准一行时间区间。bench_walredo源码注释里附带了一组参考数值标注为「2024-09-18 on im4gn.2xlarge」以下为节选文档示例仅说明输出格式与量级不是你机器上应得到的固定值ping/1 time: [21.789 µs 21.918 µs 22.078 µs] short/1 time: [31.833 µs 32.126 µs 32.428 µs] medium/1 time: [137.91 µs 138.55 µs 139.35 µs] medium/128 time: [10.412 ms 10.574 ms 10.718 ms]正确性断言short/medium用例在每次 redo 后断言结果页大小为BLCKSZPostgres 页大小断言失败会导致基准直接报错退出。文档没有给出任何通过/失败阈值参考数值也只对应标注的那台实例换机器时以自身前后两次运行的对比为准不要与文档数值直接对等。限制与相邻基准pageserver/Cargo.toml中还声明了bench_ingest、upload_queue、bench_metrics三个基准目标。其中bench_ingest带required-features [benchmarking]默认运行不会构建它本文不覆盖它的用法。bench_walredo依赖上一步构建出的pg_install/里的 Postgres 二进制缺了这一步redo 请求没有可运行的 redo 进程可用。若cargo bench报缺少系统包或protoc版本过低回到第一节按 README 补齐依赖后再重试。【免费下载链接】neonNeon: Serverless Postgres. We separated storage and compute to offer autoscaling, code-like database branching, and scale to zero.项目地址: https://gitcode.com/GitHub_Trending/ne/neon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价