深入理解sysbench工具

news2025/1/11 10:11:52

文章目录

  • 一、概述
  • 二、安装
    • 2.1、源码编译安装
    • 2.2、命令行安装
    • 2.3、安装确认
  • 三、重要参数详解
    • 3.1、查询支持的参数
    • 3.2、重要参数说明
  • 四、实例
    • 4.1、CPU性能测试
    • 4.2、内存性能测试
    • 4.3、IO性能测试
    • 4.4、POSIX线程性能测试
    • 4.5、多线程调度测试


  团队博客: 汽车电子社区


一、概述

  sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况,它主要包括以下几种方式的测试:磁盘io性能、数据库性能、内存分配及传输速度等,详细的介绍见:https://gitee.com/cn-loongson/sysbench
  它主要包括以下几种方式的测试:
    1、cpu性能
    2、磁盘io性能
    3、调度程序性能
    4、内存分配及传输速度
    5、POSIX线程性能
    6、数据库性能(OLTP基准测试)
  目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库

二、安装

2.1、源码编译安装

  源码编译安装请参考如下命令:

// 下载源码
git clone https://github.com/akopytov/sysbench.git

在这里插入图片描述  当前有0.4、0.5、1.0三个版本,我们通过如下命令来切换到1.0版本:

git checkout 1.0

在这里插入图片描述
  请执行如下命令来确认当前环境是否安装了依赖工具:

./autogen.sh

在这里插入图片描述  执行如下命令来进行配置编译选项:

./configure

在这里插入图片描述
  编译源码请参考如下命令:

make

在这里插入图片描述
  按照请参考如下命令:

sudo make install

  安装命令执行结果如下:
在这里插入图片描述

2.2、命令行安装

  Ubuntu下执行如下命令进行安装:

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

  命令行安装执行结果如下:
在这里插入图片描述

2.3、安装确认

  执行如下命令来确认sysbench是否安装成功:

sysbench --version
lyb@lyb:~/learn/sysbench$ sysbench --help 
Usage:
  sysbench [options]... [testname] [command]

Commands implemented by most tests: prepare run cleanup help

General options:
  --threads=N                     number of threads to use [1]
  --events=N                      limit for total number of events [0]
  --time=N                        limit for total execution time in seconds [10]
  --forced-shutdown=STRING        number of seconds to wait after the --time limit before forcing shutdown, or 'off' to disable [off]
  --thread-stack-size=SIZE        size of stack per thread [64K]
  --rate=N                        average transactions rate. 0 for unlimited rate [0]
  --report-interval=N             periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]
  --report-checkpoints=[LIST,...] dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []
  --debug[=on|off]                print more debugging info [off]
  --validate[=on|off]             perform validation checks where possible [off]
  --help[=on|off]                 print help and exit [off]
  --version[=on|off]              print version and exit [off]
  --config-file=FILENAME          File containing command line options
  --tx-rate=N                     deprecated alias for --rate [0]
  --max-requests=N                deprecated alias for --events [0]
  --max-time=N                    deprecated alias for --time [0]
  --num-threads=N                 deprecated alias for --threads [1]

Pseudo-Random Numbers Generator options:
  --rand-type=STRING random numbers distribution {uniform,gaussian,special,pareto} [special]
  --rand-spec-iter=N number of iterations used for numbers generation [12]
  --rand-spec-pct=N  percentage of values to be treated as 'special' (for special distribution) [1]
  --rand-spec-res=N  percentage of 'special' values to use (for special distribution) [75]
  --rand-seed=N      seed for random number generator. When 0, the current time is used as a RNG seed. [0]
  --rand-pareto-h=N  parameter h for pareto distribution [0.2]

Log options:
  --verbosity=N verbosity level {5 - debug, 0 - only critical messages} [3]

  --percentile=N       percentile to calculate in latency statistics (1-100). Use the special value of 0 to disable percentile calculations [95]
  --histogram[=on|off] print latency histogram in report [off]

General database options:

  --db-driver=STRING  specifies database driver to use ('help' to get list of available drivers) [mysql]
  --db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]
  --db-debug[=on|off] print database-specific debug information [off]


Compiled-in database drivers:
  mysql - MySQL driver

mysql options:
  --mysql-host=[LIST,...]          MySQL server host [localhost]
  --mysql-port=[LIST,...]          MySQL server port [3306]
  --mysql-socket=[LIST,...]        MySQL socket
  --mysql-user=STRING              MySQL user [sbtest]
  --mysql-password=STRING          MySQL password []
  --mysql-db=STRING                MySQL database name [sbtest]
  --mysql-ssl[=on|off]             use SSL connections, if available in the client library [off]
  --mysql-ssl-cipher=STRING        use specific cipher for SSL connections []
  --mysql-compression[=on|off]     use compression, if available in the client library [off]
  --mysql-debug[=on|off]           trace all client library calls [off]
  --mysql-ignore-errors=[LIST,...] list of errors to ignore, or "all" [1213,1020,1205]
  --mysql-dry-run[=on|off]         Dry run, pretend that all MySQL client API calls are successful without executing them [off]

Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test

See 'sysbench <testname> help' for a list of options for each test.
lyb@lyb:~/learn/sysbench$

三、重要参数详解

3.1、查询支持的参数

  执行如下命令来确认sysbench是否安装成功:
在这里插入图片描述

3.2、重要参数说明

选项默认值描述
–threads创建1的工作线程总数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
–debugl打印更多的调试信息off
–validate在可能的情况下对测试结果进行验证off
–help打印通用语法或指定测试的帮助并退出off
–verbosity详细级别(0 -只有关键消息,5 -调试)4
–percentilesysbench测量所有已处理请求的执行时间,以显示最小、平均和最大执行时间等统计信息。对于大多数基准测试,知道一个匹配某个百分比的请求执行时间值也是有用的(例如,95%百分比意味着我们应该放弃最长请求的5%,并从剩余的请求中选择最大值)。此选项允许指定查询执行次数的百分位数用于计数95
–luajit-cmd执行一个LuaJIT控制命令。这个选项相当于luajit -j

四、实例

4.1、CPU性能测试

  使用如下命令进行CPU性能测试:

# 开启两个线程,素数上限设置为20000
sysbench cpu --cpu-max-prime=20000 --threads=2 run

  执行CPU压测命令结果如下:
在这里插入图片描述

4.2、内存性能测试

  使用如下命令进行内存压测:

sysbench memory --threads=14 --memory-block-size=16K --memory-total-size=100G --memory-access-mode=seq run

  执行内存压测命令结果如下:
在这里插入图片描述

4.3、IO性能测试

  使用如下命令进行IO压测:

# 1、准备测试数据集,使用prepare命令
sysbench --test=fileio --file-total-size=2G prepare
# 2、混合随机读写测试
sysbench --test=fileio --file-test-mode=rndrw --file-total-size=2G --file-rw-ratio=2 run
# 3、清除测试数据集
sysbench --test=fileio --file-total-size=2G cleanup

  执行IO压测命令结果如下:
在这里插入图片描述

4.4、POSIX线程性能测试

  使用如下命令进行POSIX线程性能压测:

sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run

  执行POSIX线程性能命令结果如下:
在这里插入图片描述

4.5、多线程调度测试

  使用如下命令进行多线程调度测试:

sysbench mutex --threads=8 --mutex-num=2000 --mutex-locks=10000 --mutex-loops=5000 run

  执行进行多线程调度测试命令结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为路由器IPv6基础配置

1. R2的两个接口均采用静态IPv6地址配置方法 2. R1的GigabitEthernet0/0/3接口采用无状态 地址配置 3. R3的GigabitEthernet0/0/3接口采用DHCPv6 的方式配置IPv6地址 R1配置 ipv6 #全局使能IPv6 interface GigabitEthernet0/0/0ipv6 enable ipv6 address auto link-local #为…

学习JavaEE的日子 Day17 面向对象版学生管理系统

Day17 面向对象版学生管理系统 代码已放在资源里&#xff0c;有需要可自取&#xff01;&#xff01;&#xff01; 1.需求分析 管理的是一个一个的学生对象 学生类&#xff1a; public class Student{String name&#xff1b;char sex;int age;String classId;//班级号String …

1.26 day3 C++

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std; cla…

大文件传输之以太网UDP传输延迟解决方案

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业最宝贵的资产之一。随着企业规模的扩大和业务的全球化&#xff0c;大文件传输的需求日益增长&#xff0c;它不仅关系到企业内部数据的高效管理&#xff0c;也是与外部合作伙伴进行有效沟通的关键。然而&#xff0c;大文件…

aardio - 调用C编写的dll时的不同参数类型处理方法

import console; //生成 DLL import tcc; var c tcc(); c.code /** #include <stdio.h> #include <stdlib.h> #include <stdbool.h>#ifdef __cplusplus #define EXTERN_C extern "C" __declspec(dllexport) #else #define EXTERN_C __declsp…

23111 C++ day3

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespac…

零基础学编程工具简介,中文编程开发工具

零基础学编程工具简介&#xff0c;中文编程开发工具 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家…

Ansys APDL如何查看已经施加的约束和载荷

目录 查看当前已经施加的载荷和约束 查看具体的值 查看已经定义的参数 查看当前已经施加的载荷和约束 在菜单栏选择&#xff1a; 通常在有限元单元的视图下&#xff1a; 选择SOLID MODEL LOADS&#xff08;如下&#xff09;可查看当前已经施加的载荷和约束。 也可以看所有…

Redis核心技术与实战【学习笔记】 - 1.Redis为什么高性能

作为键值数据库&#xff0c;Redis 的应用非常广泛&#xff0c;如果你是后端工程师&#xff0c;我猜你出去面试&#xff0c;八成都会被问到与它相关的性能问题。比如说&#xff0c;为了保证数据的可靠性&#xff0c;Redis 需要在磁盘上读写 AOF 和 RDB&#xff0c;但在高并发场景…

使用Halcon匹配助手进行模板匹配

使用Halcon匹配助手进行模板匹配 文章目录 使用Halcon匹配助手进行模板匹配1. 选择匹配方法2. 创建模板3. 检测模板4. 优化匹配速度 使用Halcon匹配助手&#xff0c;可以很方便地选择模板图像&#xff0c;设置匹配参数&#xff0c;并测试匹配结果.Halcon匹配助手支持下面几种匹…

#常见问题总结#在docker中跑前端vue项目

目录 前言一、no such file or directory, open...总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 记录在docker中跑前端项目过程中&#xff0c;我遇到的问题以及解决方法 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

2022 年至 2023 年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题 一、 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛第一阶段试题&#xff0c;第一阶段内容包 括&#xff1a;网络平台搭建、网络安全设备配置与防护。 本阶段比赛时间为 180 分钟…

HBuilderX插件

HBuilderX>工具插件安装 安装新插件 前往插件市场安装 1.DCloud插件市场 https://ext.dcloud.net.cn/ 2.GitHub官网 插件项目(下载zip) 本地离线包 离线安装插件 https://hx.dcloud.net.cn/Tutorial/OfflineInstall open /Applications/HBuilderX.app/Contents/HBuilderX/p…

Nginx安装以及具体应用

文章目录 Centos7安装NginxNginx命令Nginx具体应用反向代理 location指令说明负载均衡动静分离 Nginx.conf配置详解 Centos7安装Nginx 下载地址&#xff1a;nginx: download 中间这个就是tar.gz包 Centos7安装Nginx 下载nginx-1.16.1.tar.gz上传到Centos7中的/user/local目…

论述Python中列表、元组、字典和集合的概念

Python列表是用于存储任意数目、任意类型的数据集合&#xff0c;包含多个元素的有序连续的内存空间&#xff0c;是内置可变序列&#xff0c;或者说可以任意修改。在Python中&#xff0c;列表以方括号&#xff08;[ ]&#xff09;形式编写。 Python元组与Python列表类似&#x…

实验:MySQL 客户端SocketTimeout 抓包分析

实验准备 服务端环境准备 服务器信息 阿里云 99 大洋白嫖机 $ cat /proc/version Linux version 5.15.0-83-generic (builddlcy02-amd64-027) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #92-Ubuntu SMP Mon Aug 14 09:30:42 UT…

JAVA架构图的设计与画法

日常的工作中&#xff0c;假如你身边坐了一个女程序猿&#xff0c;为了让乏味的工作氛围增加点提神的荷尔蒙&#xff0c;文艺又懂点技术的你可能会对她说&#xff1a;小姐姐&#xff0c;我能把世间万物抽象成一个类&#xff0c;但唯独不能抽象你&#xff0c;你在我眼里美的那么…

Cortex-M4处理器 故障处理

故障处理 故障是异常的子集&#xff0c;故障产生的原因有&#xff1a; 总线错误&#xff1a;指令获取或向量表加载&#xff1b;数据访问。内部检测到的错误&#xff0c;如未定义指令试图从标记为永不执行&#xff08;XN&#xff09;的内存区域执行指令。如果您的设备包含MPU&…

学习MySQL仅此一篇就够了(DATAGRIP连接Linux以及索引结构详解)

索引 datagrip远程连接linux 首先在要在Linux端安装MySQL linux端操作&#xff1a; mysql> create user root% identified with mysql_native_password by Wyxbuke00.; Query OK, 0 rows affected (0.01 sec)mysql> grant all on *.* to root%; Query OK, 0 rows aff…

Linux/Uinx 系统编程:进程管理(1)

Linux/Uinx 系统编程&#xff1a;进程管理&#xff08;1&#xff09; 文章目录 Linux/Uinx 系统编程&#xff1a;进程管理&#xff08;1&#xff09;什么是进程进程来源INIT 和 守护进程登录进程sh进程进程的执行模式进程管理的系统调用关于syscall中参数b&#xff0c;c&#x…