当前位置: 首页 > news >正文

keybench:可脚本化排序键值存储性能工具,多维度测试与分析全揭秘

导航菜单

切换导航,有登录选项,还可进行外观设置。

平台

包含AI代码创作、开发者工作流、应用程序安全和探索等方面。AI代码创作有GitHub Copilot、GitHub Copilot应用、MCP注册表;开发者工作流涵盖Actions、Codespaces、Issues、代码审查;应用程序安全包括GitHub高级安全、代码安全、密钥保护;探索部分有为何选择GitHub、文档、博客、更新日志、市场等。还可查看所有功能。

解决方案

按公司规模划分有企业版、中小型团队版、初创公司版、非营利组织版;按用例划分有应用现代化、DevSecOps、DevOps、CI/CD等,还可查看所有用例;按行业划分有医疗保健、金融服务、制造业、政府机构等,也可查看所有行业。还能查看所有解决方案。

资源

按主题探索有AI、软件开发、DevOps、安全等,可查看所有主题;按类型探索有客户案例、活动与网络研讨会、电子书与报告、商业洞察、GitHub技能;支持与服务包括文档、客户支持、社区论坛、信任中心、合作伙伴。还可查看所有资源。

开源

社区有GitHub赞助;项目包括安全实验室、维护者社区、加速器、GitHub之星、存档项目;仓库有主题、热门趋势、集合。

企业版

企业解决方案是企业平台,由AI驱动;可用附加组件有GitHub高级安全、Copilot for Business、高级支持。

定价

可查看定价。

搜索

可搜索代码、仓库、用户、问题、拉取请求等,还有搜索语法提示。

提供反馈

可提供反馈,包含电子邮件地址以便联系。

保存的搜索

使用保存的搜索可更快速筛选结果,若要查看所有可用限定符,可参阅文档。

登录与注册

有登录和注册选项,还有外观设置,以及登录状态提醒。

仓库信息

有guycipher/keybench仓库,包含通知、分叉、加星等操作,还有代码、问题、拉取请求、操作、项目、安全与质量、洞察等导航选项。

keybench介绍

keybench是一款可脚本化、可扩展的排序键值存储性能工具。可使用Lua编写工作负载,在一个或多个存储引擎上运行,对操作计时,报告吞吐量和延迟,相同脚本可在各引擎上无改动运行,便于公平比较。

测量指标

keybench会报告两种速率和一个延迟分布。wu/s是每秒执行的工作负载单位数,一个单位是对 `run()` 函数的一次调用;ops/s是每秒执行的基本操作数,一个基本操作可以是一次 `put`、`get`、`del`、`range` 或 `scan` 调用,或者是 `mget`、`mput` 或 `mdel` 中处理的一个键。当每个工作负载单位只包含一个基本操作时,两种速率相等;包含多个基本操作时,报告中会分别显示。延迟以分布形式记录,每种操作都有自己的直方图,报告中会给出每个操作的p50、p99、p99.9和最大值。

工作原理

keybench由五个可替换部分组成。引擎负责并发处理,创建工作线程,分配操作预算,测试框架不锁引擎调用;工作负载是一个Lua表,包含名称、`load` 函数和 `run` 函数,`load` 函数用于填充存储,`run` 函数是被测量单位;存储是统一接口,脚本通过全局 `kv` 表调用存储操作,keybench会计时并统计基本操作数;后端是自注册插件,每个引擎在 `backends/` 目录下,可通过命令行参数选择;报告器是输出接收器,一次运行会将信息广播给指定报告器,可同时运行多个报告器。

构建

keybench自带Lua库,默认构建只需C编译器和pthreads,使用 `make` 命令生成 `./keybench`,包含内存中的跳表引擎。编译持久化引擎可指定引擎名称,还可指定分配器、引擎库和头文件位置等。若使用系统Lua,可使用 `make LUA_SYS=1` 命令。还有其他目标,如 `make run`、`make all-wl`、`make clean`。

运行

最小运行命令只需指定一个工作负载文件,默认在一个线程上对跳表引擎执行200000个工作负载单位,并输出控制台报告,报告包含系统探测信息、构建探测信息、操作延迟分布、命中率和吞吐量等。

实时进度

运行过程中,keybench每秒会向stderr输出一行状态信息,限时运行会显示已用时间、预算时间和当前速率,限操作数运行会显示已用时间、速率和操作预算完成百分比,状态信息只在stderr是终端时输出。

选择工作参数

可通过 `--ops N` 指定总操作单位数,`--secs S` 指定运行时间,`--users N` 指定用户数量,`--items N` 指定目录大小,`--seed N` 指定随机数生成器基础种子。`--ops` 和 `--secs` 只能选一个,`--users`、`--items` 和 `--seed` 始终适用。

扫描和比较

在参数中使用逗号分隔的列表可将一次运行扩展为网格,keybench会运行网格中的每个点,并输出汇总表。可通过 `--backend L` 指定引擎,`--threads L` 指定线程数,`--batch L` 指定批量大小,`--repeat N` 指定每个点运行次数。指定多个文件可按顺序运行,每个文件在新存储中独立运行。

报告器和实时时间线

可通过 `--report S` 指定输出接收器列表,`--timeline S` 指定采样间隔,`--report-dir D` 创建带时间戳的目录并打包结果文件。接收器名称包括 `console`、`tsv` 和 `timeline`,不同接收器有不同输出格式。

探测

探测用于记录基准测试上下文信息,系统探测报告主机、CPU、内存等信息,构建探测报告keybench版本、编译器和分配器。可通过 `--probe L` 指定探测列表。

配置文件和重放

一次运行可保存为配置文件并精确重放,配置文件格式为纯INI,`[bench]` 部分设置运行参数,引擎部分调整引擎。可通过 `--config F` 加载运行参数和引擎调整信息,`--save-config F` 保存重放配置。

示例

执行模型是一次运行是一个网格,由引擎列表、线程列表和批量大小列表组合构成,keybench为每个工作负载文件运行一次该网格,网格中每个单元格测量 `--repeat` 次并取中位数。有优先级规则,`--config` 文件提供默认值,命令行标志会覆盖它,`--report-dir` 会接管报告功能。持久化引擎需要 `--data-dir`,跳表引擎不需要。还给出了多个示例展示不同的运行方式。

绘图

`scripts/plot.py` 可将结果目录中的TSV文件渲染为图表,包括吞吐量柱状图、可扩展性曲线等,系统时间线图表包含系统探测记录的所有指标,引擎内部状态绘制在单独图表中,引擎颜色来自 `BACKENDPALETTE` 文件,默认图表保存为PNG格式。

http://www.jsqmd.com/news/967067/

相关文章:

  • 国内合规AI写作网站盘点:降AIGC查重,这六款工具谁更靠谱?
  • 动手复现Hinton经典:用PyTorch跑通1986年的反向传播论文代码
  • 贵阳市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • 深度理解 Python 装饰器:从原理到实战,彻底掌握高阶语法
  • 新手必看:哔哩下载姬downkyi如何让你轻松收藏B站高清视频
  • 用户停留时长×跳出率×跨端转化率×语义聚类得分×时效衰减因子,CSDN AI选题到底在算什么?
  • 纯C实现的xcorr互相关函数,兼容MATLAB接口,支持biased/unbiased/cross三种计算模式
  • 从振动传感器到预测性维护:智能故障诊断在风电行业的落地实战
  • 桂林市2026贵金属回收精选排名榜单 黄金铂金白银彩金回收靠谱正规门店推荐及联系电话汇总 - 前途无量YY
  • AVEVA PDMS二次开发避坑指南:从PML1到PML2迁移的5个常见错误
  • 纯C++控制台通讯录程序:离线增删改查+批量清空,含源码和可执行文件
  • 硕士论文写作刚需,5 个本土 AI 辅助写作平台实测,真实参考文献推荐、可选格式模版
  • 新手必看:用C++ switch和if-else两种方法搞定《信息学奥赛一本通》2058计算器题
  • 时序分析实战工具链:从数据清洗到生产部署的六层选型指南
  • GT20L16S1Y字库芯片的‘竖置横排’是啥?一篇讲透点阵数据与LCD屏幕的匹配原理
  • CSDN AI写稿模块技术领域覆盖真相(非官方但经逆向API+文档解析验证):Python✅、Java✅、TypeScript⚠️、Rust❌、Go⚠️——附4步手动启用隐藏前端支持技巧
  • 六盘水黄金白银回收正规资质TOP5盘点 - 余生黄金回收
  • 京东自动化抢购脚本:如何用Python实现毫秒级精准秒杀
  • 手把手教你排查RTL8211F-CG网口不通:从125MHz时钟到RGMII时序的保姆级调试指南
  • 多维聚合中的数据操作:Slice、Pivot、Roll-up实战指南
  • 2026年C型钢可靠供应商评测:开口楼承板、河北c型钢、河北z型钢、河北不锈钢天沟、河北彩钢板、河北铝镁锰板、燕尾式楼承板选择指南 - 优质品牌商家
  • 西电离散数学上机实操代码包:图连通性、关系判定与闭包计算全实现
  • 编译原理课设避坑指南:LL(1)文法判断与递归下降语法分析的那些‘坑’
  • 探索Windows Subsystem for Android:让Android应用在Windows上焕发新生
  • React移动端项目上架前,用MUMU模拟器做真机测试的完整流程(附HBuilderX配置)
  • 从零开始搞懂SoC:芯片里的“五脏六腑”是如何协同工作的?
  • Windows视频播放终极解决方案:LAV Filters完全指南
  • 控制与强化学习 可控性与动态规划:从LQR到强化学习的统一视角
  • 保研推荐信避坑指南:从导师签字到邮件发送,这5个细节千万别忽略
  • 告别“小爱同学”:用LD3320语音模块DIY一个离线语音助手(Arduino/STM32教程)