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

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_SYS1 命令。还有其他目标如 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格式。