CPU、内存、磁盘IO性能如何压测?

2022-06-07 08:34:12 浏览数 (1)

介绍

  • SysBench 是一款开源的、跨平台的、模块化的、多线程的性能测试工具, 可以执行 CPU/内存/线程/IO/数据库 等方面的性能测试. 用于评估操作系统的性能参数.
代码语言:javascript复制
* oltp_*.lua: a collection of OLTP-like database benchmarks
* fileio: a filesystem-level benchmark
* cpu: a simple CPU benchmark
* memory: a memory access benchmark
* threads: a thread-based scheduler benchmark
* mutex: a POSIX mutex benchmark
  • 主要包含如下几种测试

安装 sysbench

  • yum -y install sysbench

一 、CPU性能测试 (cpu测试主要是进行素数的加法运算)

  • 帮助命令 sysbench cpu help
代码语言:javascript复制
sysbench 1.0.17 (using system LuaJIT 2.0.4)

cpu options:
  --cpu-max-prime=N upper limit for primes generator [10000] 最大质数发生器数量。默认是10000
  • 测试命令 sysbench cpu --cpu-max-prime=20000 --threads=2 run

二、内存分配及传输速度

  • 帮助命令 sysbench memory help
代码语言:javascript复制
sysbench 1.0.17 (using system LuaJIT 2.0.4)

memory options:
  --memory-block-size=SIZE    size of memory block for test [1K]
  --memory-total-size=SIZE    total size of data to transfer [100G]
  --memory-scope=STRING       memory access scope {global,local} [global]
  --memory-hugetlb[=on|off]   allocate memory from HugeTLB pool [off]
  --memory-oper=STRING        type of memory operations {read, write, none} [write]
  --memory-access-mode=STRING memory access mode {seq,rnd} [seq]
  • 测试命令 sysbench memory --memory-block-size=8k --memory-total-size=2G run

三、磁盘IO性能测试

  • 帮助命令 sysbench fileio help
代码语言:javascript复制
fileio options:
  --file-num=N                  number of files to create [128]
  --file-block-size=N           block size to use in all IO operations [16384]
  --file-total-size=SIZE        total size of files to create [2G]
  --file-test-mode=STRING       test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}
  --file-io-mode=STRING         file operations mode {sync,async,mmap} [sync]
  --file-async-backlog=N        number of asynchronous operatons to queue per thread [128]
  --file-extra-flags=[LIST,...] list of additional flags to use to open files {sync,dsync,direct} []
  --file-fsync-freq=N           do fsync() after this number of requests (0 - don't use fsync()) [100]
  --file-fsync-all[=on|off]     do fsync() after each write operation [off]
  --file-fsync-end[=on|off]     do fsync() at the end of test [on]
  --file-fsync-mode=STRING      which method to use for synchronization {fsync, fdatasync} [fsync]
  --file-merged-requests=N      merge at most this number of IO requests if possible (0 - don't merge) [0]
  --file-rw-ratio=N             reads/writes ratio for combined test [1.5]
  • 测试命令
  • 1、prepare阶段,生成需要的测试文件,完成后会在当前目录下生成很多小文件
代码语言:javascript复制
sysbench  fileio --threads=2 --file-total-size=1G --file-test-mode=rndrw prepare
  • 2、run阶段
代码语言:javascript复制
sysbench  fileio --threads=2 --file-total-size=1G --file-test-mode=rndrw run
  • 3、清理测试时生成的文件
代码语言:javascript复制
sysbench  fileio --threads=2 --file-total-size=1G --file-test-mode=rndrw cleanup

四、 mutex性能测试

  • 帮助命令 sysbench mutex help
代码语言:javascript复制
mutex options:
  --mutex-num=N   total size of mutex array [4096] 数组互斥的总大小
  --mutex-locks=N number of mutex locks to do per thread [50000]  每个线程互斥锁的数量
  --mutex-loops=N number of empty loops to do outside mutex lock [10000] 内部互斥锁的空循环数量
  • 命令测试 sysbench mutex --threads=2 --mutex-num=4096 --mutex-locks=50000 --mutex-loops=10000 run

五、POSXI线程性能

  • 帮助测试 sysbench threads help
代码语言:javascript复制
threads options:
  --thread-yields=N number of yields to do per request [1000]  每个请求产生多少个线程。
  --thread-locks=N  number of locks per thread [8] 每个线程的锁的数量
  • 命令测试 sysbench threads --threads=2 --thread-yields=100 --thread-locks=4 run

六、数据库性能(OLTP基准测试)

待定后续~

  • 参考官方文档:https://github.com/akopytov/sysbench

0 人点赞