sysbench

sysbench

灵活可扩展的多线程基准测试工具 支持多种系统性能评估

sysbench是一款基于LuaJIT的多线程基准测试工具,具有高度可扩展性。它不仅适用于数据库性能测试,还能模拟各种复杂工作负载。sysbench内置了OLTP、文件I/O、CPU、内存等多种基准测试,支持高并发场景,并提供详细的性能统计。用户可通过Lua脚本轻松创建自定义测试。该工具支持Linux、macOS和Windows Subsystem for Linux等主流平台。

sysbench基准测试性能测试数据库多线程Github开源项目

[![最新发布][release-badge]][release-url] [![构建状态][action-badge]][action-url] [![Debian 软件包][deb-badge]][deb-url] [![RPM 软件包][rpm-badge]][rpm-url] [![覆盖率状态][coveralls-badge]][coveralls-url] [![许可证][license-badge]][license-url]

<!-- markdown-toc start - 请勿编辑此部分。再次运行 M-x markdown-toc-generate-toc -->

目录

<!-- markdown-toc end -->

sysbench

sysbench 是一个基于 LuaJIT 的可脚本化多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。

sysbench 附带以下内置基准测试:

  • oltp_*.lua:一系列类 OLTP 数据库基准测试
  • fileio:文件系统级基准测试
  • cpu:简单的 CPU 基准测试
  • memory:内存访问基准测试
  • threads:基于线程的调度器基准测试
  • mutex:POSIX 互斥锁基准测试

特性

  • 提供关于速率和延迟的广泛统计信息,包括延迟百分位数和直方图;
  • 即使在数千个并发线程下也能保持低开销。sysbench 能够每秒生成和跟踪数亿个事件;
  • 通过在用户提供的 Lua 脚本中实现预定义的钩子,可以轻松创建新的基准测试;
  • 也可用作通用 Lua 解释器,只需在脚本中将 #!/usr/bin/lua 替换为 #!/usr/bin/sysbench

从二进制包安装

Linux

在 Linux 上下载和安装 sysbench 的最简单方法是使用 packagecloud 托管的二进制包仓库。这些仓库会在每次 sysbench 发布时自动更新。目前提供 x86_64、i386 和 aarch64 架构的二进制文件。

有多种下载和安装 sysbench 包的方法,详细说明可在 https://packagecloud.io/akopytov/sysbench/install 找到。

快速安装说明:

  • Debian/Ubuntu

    curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench
  • RHEL/CentOS:

    curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench
  • Fedora:

    curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo dnf -y install sysbench
  • Arch Linux:

    sudo pacman -Suy sysbench

macOS

在 macOS 上,可以通过 Homebrew 获取最新的 sysbench 包:

# 如果需要 PostgreSQL 支持,请添加 --with-postgresql brew install sysbench

Windows

从 sysbench 1.0 版本开始,已停止支持原生 Windows 构建。可能会在后续版本中重新引入。目前,在 Windows 上获取 sysbench 的推荐方法是使用 Windows 10 中提供的 Windows Subsystem for Linux

安装 WSL 并进入 Windows 上的 bash 提示符后,按照 Debian/Ubuntu 的安装说明操作即可。或者,可以使用 WSL 从源代码构建和安装 sysbench,或使用旧版 sysbench 构建原生二进制文件。

从源代码构建和安装

建议按照从二进制包安装中的说明从官方二进制包安装 sysbench。以下是当您想在没有可用二进制包的架构上使用 sysbench 时的说明。

构建要求

Windows

从 sysbench 1.0 版本开始,已停止支持原生 Windows 构建。可能会在后续版本中重新引入。目前,在 Windows 上构建 sysbench 的推荐方法是使用 Windows 10 中提供的 Windows Subsystem for Linux

安装 WSL 并进入 Windows 上的 bash 提示符后,按照 Debian/Ubuntu 的构建说明操作即可。或者,可以在 Windows 上构建和使用较旧的 0.5 版本。

Debian/Ubuntu

apt -y install make automake libtool pkg-config libaio-dev # 对于 MySQL 支持 apt -y install libmysqlclient-dev libssl-dev # 对于 PostgreSQL 支持 apt -y install libpq-dev

RHEL/CentOS

yum -y install make automake libtool pkgconfig libaio-devel # 对于MySQL支持,在RHEL/CentOS 5上替换为mysql-devel yum -y install mariadb-devel openssl-devel # 对于PostgreSQL支持 yum -y install postgresql-devel

Fedora

dnf -y install make automake libtool pkgconfig libaio-devel # 对于MySQL支持 dnf -y install mariadb-devel openssl-devel # 对于PostgreSQL支持 dnf -y install postgresql-devel

macOS

假设你已经安装了Xcode(或Xcode命令行工具)和Homebrew:

brew install automake libtool openssl pkg-config # 对于MySQL支持 brew install mysql # 对于PostgreSQL支持 brew install postgresql # openssl未被Homebrew链接,这是为了避免"ld: library not found for -lssl"错误 export LDFLAGS=-L/usr/local/opt/openssl/lib

构建和安装

./autogen.sh # 添加--with-pgsql以构建PostgreSQL支持 ./configure make -j make install

上述步骤将默认构建带有MySQL支持的sysbench。如果你的MySQL头文件和库位于非标准位置(且在PATH中找不到mysql_config),你可以使用--with-mysql-includes--with-mysql-libs选项明确指定它们的位置。

要编译不带MySQL支持的sysbench,使用--without-mysql。如果没有可用的数据库驱动,与数据库相关的脚本将无法工作,但其他基准测试仍可正常运行。

使用方法

基本语法

sysbench的基本命令行语法为:

sysbench [选项]... [测试名称] [命令] 
  • 测试名称是可选的内置测试名称(如fileiomemorycpu等),或捆绑的Lua脚本名称(如oltp_read_only),或自定义Lua脚本的路径。如果命令行中未指定测试名称(因此也没有命令,因为这种情况下它会被解析为测试名称),或测试名称为破折号("-"),则sysbench会从标准输入中读取要执行的Lua脚本。

  • 命令是一个可选参数,sysbench会将其传递给指定的内置测试或脚本。命令定义了测试需要执行的操作。可用命令列表取决于特定测试。某些测试还实现了自己的自定义命令。

    以下是典型测试命令及其用途的描述:

    • prepare:为需要准备工作的测试执行准备操作,例如为fileio测试在磁盘上创建必要的文件,或为数据库基准测试填充测试数据库。
    • run:运行由测试名称参数指定的实际测试。所有测试都提供此命令。
    • cleanup:在那些创建临时数据的测试运行后,移除临时数据。
    • help:显示由测试名称参数指定的测试的使用信息。这包括测试提供的完整命令列表,因此应该用它来获取可用命令。
  • 选项是以'--'开头的零个或多个命令行选项列表。与命令一样,应使用sysbench 测试名称 help命令来描述特定测试提供的可用选项。

    有关sysbench本身提供的通用选项描述,请参阅通用命令行选项

你可以使用sysbench --help显示通用命令行语法和选项。

通用命令行选项

下表列出了支持的通用选项、它们的描述和默认值:

选项描述默认值
--threads要创建的工作线程总数1
--events请求总数的限制。0(默认值)表示无限制0
--time总执行时间限制(秒)。0表示无限制10
--warmup-time在实际进行统计的基准测试运行之前,禁用统计功能执行指定秒数的事件。这在您想要从统计中排除基准测试运行的初始阶段时非常有用。在许多基准测试中,初始阶段并不具有代表性,因为CPU/数据库/页面和其他缓存需要一些时间来预热0
--rate平均事务率。该数字指定所有线程平均每秒应执行多少个事件(事务)。0(默认值)表示无限制速率,即事件以尽可能快的速度执行0
--thread-init-timeout等待工作线程初始化的时间(秒)30
--thread-stack-size每个线程的堆栈大小32K
--report-interval定期报告中间统计信息,间隔时间以秒为单位。请注意,此选项生成的统计信息是每个间隔的,而不是累积的。0表示禁用中间报告0
--debug打印更多调试信息off
--validate在可能的情况下执行测试结果验证off
--help打印一般语法或指定测试的帮助信息,然后退出off
--verbosity详细程度级别(0 - 仅关键消息,5 - 调试)4
--percentilesysbench测量所有处理请求的执行时间,以显示最小、平均和最大执行时间等统计信息。对于大多数基准测试来说,了解与某个百分位数匹配的请求执行时间值也很有用(例如,95%百分位数意味着我们应该丢弃5%的最长请求,并从剩余的请求中选择最大值)。此选项允许指定查询执行时间的百分位数排名进行计数95
--luajit-cmd执行LuaJIT控制命令。此选项等同于luajit -j。有关更多信息,请参阅LuaJIT文档

请注意,所有大小选项(如本表中的--thread-stack-size)的数值可以通过附加相应的乘数后缀来指定(K表示千字节,M表示兆字节,G表示吉字节,T表示太字节)。

随机数选项

sysbench提供了多种算法来生成符合给定概率分布的随机数。下表列出了可用于控制这些算法的选项。

选项描述默认值
--rand-type默认使用的随机数分布 {uniform、gaussian、special、pareto、zipfian}。基准测试脚本可以选择使用默认分布,或明确指定分布,即覆盖默认值。special
--rand-seed随机数生成器的种子。当为0时,使用当前时间作为RNG种子。0
--rand-spec-iter特殊分布的迭代次数12
--rand-spec-pct特殊分布中"特殊"值将落入的整个范围的百分比1
--rand-spec-res特殊分布使用的"特殊"值的百分比75
--rand-pareto-h帕累托分布的形状参数0.2
--rand-zipfian-exp齐普夫分布的形状参数(theta)0.8

版本控制

为了透明度和对其发布周期的洞察,以及努力保持向后兼容性,sysbench将尽可能遵循语义化版本控制指南进行维护。

版本号将采用以下格式:

<主版本号>.<次版本号>.<修订号>

并遵循以下准则构建:

  • 破坏向后兼容性的更改会增加主版本号(并重置次版本号和修订号)
  • 在不破坏向后兼容性的情况下添加新功能会增加次版本号(并重置修订号)
  • Bug修复和其他杂项更改会增加修订号

有关语义化版本控制的更多信息,请访问http://semver.org/。 [coveralls-badge]: https://coveralls.io/repos/github/akopytov/sysbench/badge.svg?branch=master [coveralls-url]: https://coveralls.io/github/akopytov/sysbench?branch=master [action-url]: https://github.com/akopytov/sysbench/actions/workflows/ci.yml [action-badge]: https://github.com/akopytov/sysbench/actions/workflows/ci.yml/badge.svg [license-badge]: https://img.shields.io/badge/license-GPLv2-blue.svg [license-url]: COPYING [release-badge]: https://img.shields.io/github/release/akopytov/sysbench.svg [release-url]: https://github.com/akopytov/sysbench/releases/latest [deb-badge]: https://img.shields.io/badge/Packages-Debian-red.svg?style=flat [deb-url]: https://packagecloud.io/akopytov/sysbench?filter=debs [rpm-badge]: https://img.shields.io/badge/Packages-RPM-blue.svg?style=flat [rpm-url]: https://packagecloud.io/akopytov/sysbench?filter=rpms

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多