Skip to content

Latest commit

 

History

History
217 lines (140 loc) · 7.09 KB

服务器基准测试.md

File metadata and controls

217 lines (140 loc) · 7.09 KB

服务器基准测试

工具篇

工欲利其事,必先利其器。在基准测试中,我们首先介绍以下几个神器:

sysbench 综合性能测试工具

sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。项目地址

它可以进行以下几项测试:

1.cpu性能
2.磁盘io性能
3.调度程序性能
4.内存分配及传输速度
5.POSIX线程性能
6.数据库性能(OLTP基准测试,MySQL,pgsql,oracle )

本文只用来测试cpu和内存性能。

下载最新稳定版源码包。项目地址 接下来,按照以下步骤安装:

tar zxf sysbench*
cd sysbench*
./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib && make && make install
strip /usr/local/bin/sysbench

iozone 文件系统性能测试工具

iozone 是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统 的读写性能。可以测试 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread,mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。项目地址

安装方法:

下载源码包最新稳定版:下载链接

tar xvf iozone*
cd iozone*
make

netperf 网络性能测试工具

netperf是一个基于C/S结构的网络性能测试工具,主要针对基于TCP和UDP的传输。针对不通的业务,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是两个系统之间发送和接受数据的速度和效率。项目地址

安装方法:

svn co http://www.netperf.org/svn/netperf2/trunk/
cd netperf*
./configure
make&&make install

开始测试

cpu篇

使用sysbench对cpu进行性能测试。

sysbench --test=cpu --cpu-max-prime=20000 run
# 通过计算最大素数来测试CPU性能

返回结果示例

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          27.3193s
total number of events:              10000
total time taken by event execution: 27.3180
per-request statistics:
     min:                                  2.73ms
     avg:                                  2.73ms
     max:                                  3.09ms
     approx.  95 percentile:               2.73ms
Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   27.3180/0.00

结果分析:

execution time 值越小,性能越好

内存篇

使用sysbench对内存进行性能测试

sysbench --test=memory --num-threads=64 --memory-block-size=8192 --memory-total-size=4G run
#测试过程为在内存中传输4G的数据量,每个block大小为8K

返回结果示例:

Operations performed: 524288 (942532.69 ops/sec)  (1)
4096.00 MB transferred (7363.54 MB/sec)           (2) 
Test execution summary:
total time:                          0.5563s    
total number of events:              524288
total time taken by event execution: 21.2037      (3)
per-request statistics:
     min:                                  0.00ms
     avg:                                  0.04ms
     max:                                478.24ms  
     approx.  95 percentile:               0.00ms
Threads fairness:
    events (avg/stddev):           8192.0000/6258.63
    execution time (avg/stddev):   0.3313/0.06

结果分析:

(3)越短,Operations (1)(2)越大 性能越好

文件系统

使用IOZone对文件系统进行测试

iozone –Rab –g [最大文件大小] output.xls
#最大文件大小应大于内存大小,避免使用缓存,由于数据比较多,把数据存到excel里,可视化处理。

结果分析: 测试结果为不同的块大小,不同文件大小的时候,文件系统在不同场景的表现(读写速度和ops,越大说明性能越好)。可以用excel绘图,横向和纵向做比较。

网络

使用后netperf进行测试,需要2个机器,拓扑如下

被测机器<=======>测试机

被测机器服务端用法:

netserver -p < port > #启动netperf服务端,< prort >

测试机客户端用法:

netperf [global options] --[test-specific options]

选项:

  • [global options] 可选参数,其中可选的参数有如下几个:

    -H host 指定远端运行netserver的server IP地址 -l testlen 指定测试的时间长度(秒)
    -t testname 指定进行的测试类型(TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR)

  • [test-specific options] 可选参数,其中可选的参数有如下几个:

    -s size 设置本地系统的socket发送与接收缓冲大小 -S size 设置远端系统的socket发送与接收缓冲大小 -m size 设置本地系统发送测试分组的大小 -M size 设置远端系统接收测试分组的大小 -D 对本地与远端系统的socket设置TCP_NODELAY选项 -r req,resp 设置request和reponse分组的大小

用例:

  • 批量(bulk)网络流量的性能

    • TCP

      netperf -t TCP_STREAM -H < 被测机器IP > -l 60

    • UDP

      netperf -t UDP_STREAM -H < 被测机器IP > -l 60

返回示例:

Recv   Send    Send  Socket Socket  Message  Elapsed  
Size   Size    Size     Time     Throughput 
bytes  bytes   bytes    sec    10^6bits/sec 
87380  16384   2048    60.00      87.62 

结果分析:

1.远端系统(即server)使用大小为87380字节的socket接收缓冲 2.本地系统(即client)使用大小为16384字节的socket发送缓冲 3.向远端系统发送的测试分组大小为16384字节 4.测试经历的时间为60秒
5.吞吐量的测试结果为88Mbits/秒

衡量标准:

吞吐量越大性能越好。

  • 请求/应答(request/response)网络流量的性能

返回示例

Socket Size   Request  Resp.   Elapsed  Trans. 
Send   Recv   Size     Size    Time     Rate 
bytes  Bytes  bytes    bytes   secs.    per sec 
16384  87380  1        1       10.00    9502.73 

衡量标准

Rate(平均交易率 次/秒)越大性能越好,

* TCP_RR 单次TCP连接,多次交互。 

    netperf -t TCP_RR -H < 被测机器IP >

* TCP_CRR 单次TCP连接,单次交互。

    netperf -t TCP_CRR -H < 被测机器IP >

* UDP_RR 类似于TCP_RR

    netperf -t UDP_RR -H < 被测机器IP >

备注:

实际中可以根据业务类型,调节[ test-specific options ]的参数进行测试,对网络栈进行优化。

参考文档: