linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

1、对CPU进行简单测试:html

一、经过bc命令计算特别函数linux

例:计算圆周率ios

echo "scale=5000; 4*a(1)" | bc -l -qapache


MATH LIBRARY 
       If bc is invoked with the -l option, a math library is preloaded and the default  scale  is  set  to  20. 
       The  math  functions  will  calculate their results to the scale set at the time of their call.  The math 
       library defines the following functions: 
       s (x)  The sine of x, x is in radians.    正玄函数 
       c (x)  The cosine of x, x is in radians.  余玄函数 
       a (x)  The arctangent of x, arctangent returns radians. 反正切函数 
       l (x)  The natural logarithm of x.  log函数(以2为底) 
       e (x)  The exponential function of raising e to the value x.  e的指数函数 
       j (n,x) The bessel function of integer order n of x.   贝塞尔函数 
浏览器




二、工具二:Super Pi for linux

Super PI是利用CPU的浮点运算能力来计算出π(圆周率),因此目前广泛被超频玩家用作测试系统稳定性和测试CPU计算完后特定位数圆周率所需的时间。
http://www.super-computing.org/
下载页:ftp://pi.super-computing.org/

wget ftp://pi.super-computing.org/Linux/super_pi.tar.gz
tar -xzvf super_pi.tar.gz
./super_pi 20
20为位数。表示要算2的多少次方位,如一般要算小数点后1M位。
缓存

wKiom1R-rnXCmbdwAASCjAYEnzQ462.jpg


2、对内存进行简单测试:服务器

工具:memtester
官方:
http://pyropus.ca/software/memtester/

wget http://pyropus.ca/software/memtester/old-versions/memtester-4.3.0.tar.gz
tar -xzvf memtester-4.3.0.tar.gz
cd memtester-4.3.0
make && make install
cookie

用法:Usage: ./memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]
例:memtester 1G 5
wKioL1R-s8yAbf4yAAKk1_Y7zbE003.jpg
网络


3、对IO进行简单测试:数据结构

一、利用dd来进行测试:

time dd if=/dev/zero of=test bs=1M count=4096

用top和iostat查看wa%及写硬盘速度

二、使用fio命令进行测试:

FIO是测试IOPS的很是好的工具,用来对硬件进行压力测试和验证,支持13种不一样的I/O引擎,
包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

说明:
filename=/dev/sdb1 测试文件名称,一般选择须要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,若是不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每一个进程的信息。
此外
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每一个进程生成文件的数量。


随机读:
fio --filename=/dev/sda3 --direct=1 --iodepth 1 --thread --rw=randread --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
顺序读:
fio --filename=/dev/sda3 --direct=1 --iodepth 1 --thread --rw=read --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
随机写:
fio --filename=/dev/sda3 --direct=1 --iodepth 1 --thread --rw=randwrite --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
顺序写:
fio --filename=/dev/sda3 --direct=1 --iodepth 1 --thread --rw=write --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
混合随机读写:
fio --filename=/dev/sda3 --direct=1 --iodepth 1 --thread --rw=randrw --rwmixread=70 --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest --ioscheduler=noop

三、iozone测试

IOZONE主要用来测试操做系统文件系统性能的测试工具,该工具所测试的范围主要有,write , Re-write, Read, Re-Read, Random Read, Random Write, Random Mix, Backwards Read, Record Rewrite, Strided Read, Fwrite, Frewrite, Fread, Freread, Mmap, Async I/O

使用iozone能够在多线程、多cpu,并指定cpu cache空间大小以及同步或异步I/O读写模式的状况下进行测试文件操做性能;

(0=write/rewrite, 1=read/re-read, 2=random-read/write
3=Read-backwards, 4=Re-write-record, 5=stride-read, 6=fwrite/re-fwrite, 7=fread/Re-fread,
8=random mix, 9=pwrite/Re-pwrite, 10=pread/Re-pread, 11=pwritev/Re-pwritev, 12=preadv/Re-preadv).

Write: 测试向一个新文件写入的性能。当一个新文件被写入时,不只仅是那些文件中的数据须要被存储,还包括那些用于定位数据存储在存储介质的具体位置的额外信息。这些额外信息被称做“元数据”。它包括目录信息,所分配的空间和一些与该文件有关但又并不是该文件所含数据的其余数据。拜这些额外信息所赐,Write的性能一般会比Re-write的性能低。
Re-write: 测试向一个已存在的文件写入的性能。当一个已存在的文件被写入时,所需工做量较少,由于此时元数据已经存在。Re-write的性能一般比Write的性能高。
Read: 测试读一个已存在的文件的性能。
Re-Read: 测试读一个最 近读过的文件的性能。Re-Read性能会高些,由于操做系统一般会缓存最 近读过的文件数据。这个缓存能够被用于读以提升性能。
Random Read: 测试读一个文件中的随机偏移量的性能。许多因素均可能影响这种状况下的系统性能,例如:操做系统缓存的大小,磁盘数量,寻道延迟和其余。
Random Write: 测试写一个文件中的随机偏移量的性能。一样,有许多因素可能影响这种状况下的系统性能,例如:操做系统缓存的大小,磁盘数量,寻道延迟和其余。
Random Mix: 测试读写一个文件中的随机偏移量的性能。许多因素可能影响这种状况下的系统性能运做,例如:操做系统缓存的大小,磁盘数量,寻道延迟和其余。这个测试只有在吞吐量测试模式下才能进行。每一个线程/进程运行读或写测试。这种分布式读/写测试是基于round robin 模式的。最好使用多于一个线程/进程执行此测试。
Backwards Read: 测试使用倒序读一个文件的性能。这种读文件方法可能看起来很好笑,事实上,有些应用确实这么干。MSC Nastran是一个使用倒序读文件的应用程序的一个例子。它所读的文件都十分大(大小从G级别到T级别)。尽管许多操做系统使用一些特殊实现来优化顺序读文件的速度,不多有操做系统注意到并加强倒序读文件的性能。
Record Rewrite: 测试写与覆盖写一个文件中的特定块的性能。这个块可能会发生一些颇有趣的事。若是这个块足够小(比CPU数据缓存小),测出来的性能将会很是高。若是比CPU数据缓存大而比TLB小,测出来的是另外一个阶段的性能。若是比此两者都大,但比操做系统缓存小,获得的性能又是一个阶段。若大到超过操做系统缓存,又是另外一番结果。
Strided Read: 测试跳跃读一个文件的性能。举例以下:在0偏移量处读4Kbytes,而后间隔200Kbytes,读4Kbytes,再间隔200Kbytes,如此反复。此时的模式是读4Kbytes,间隔200Kbytes并重复这个模式。这又是一个典型的应用行为,文件中使用了数据结构而且访问这个数据结构的特定区域的应用程序经常这样作。
许多操做系统并没注意到这种行为或者针对这种类型的访问作一些优化。一样,这种访问行为也可能致使一些有趣的性能异常。一个例子是在一个数据片化的文件系统里,应用程序的跳跃致使某一个特定的磁盘成为性能瓶颈。
Fwrite: 测试调用库函数fwrite()来写文件的性能。这是一个执行缓存与阻塞写操做的库例程。缓存在用户空间以内。若是一个应用程序想要写很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能经过减小实际操做系统调用并在操做系统调用时增长传输块的大小来加强应用程序的性能。
这个测试是写一个新文件,因此元数据的写入也是要的。
Frewrite:测试调用库函数fwrite()来写文件的性能。这也是一个执行缓存与阻塞写操做的库例程。是缓存在用户空间以内。若是一个应用程序想要写很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能够经过减小实际操做系统调用并在操做系统调用时增长传输块的大小来加强应用程序的性能。
这个测试是写入一个已存在的文件,因为无元数据操做,测试的性能会高些。
Fread:测试调用库函数fread()来读文件的性能。这是一个执行缓存与阻塞读操做的库例程。缓存在用户空间以内。若是一个应用程序想要读很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能经过减小实际操做系统调用并在操做系统调用时增长传输块的大小从而加强应用程序的性能。
几个特殊测试:
Mmap:许多操做系统支持mmap()的使用来映射一个文件到用户地址空间。映射以后,对内存的读写将同步到文件中去。这对一些但愿将文件看成内存块来使用的应用程序来讲很方便。一个例子是内存中的一块将同时做为一个文件保存在于文件系统中。



工具:IOzone
官方:http://www.iozone.org/

wget http://www.iozone.org/src/current/iozone3_429.tar
tar -xvf iozone3_429.tar
cd iozone3_429/src/current
make
make linux-ia64


参数:

-a 用来使用全自动模式。生成包括全部测试操做的报告,使用的块 大小从4k到16M,文件大小从64k到512M

-R 产生execl格式的输出日志。
-b 将产生二进制的execl的日志文件名。
-s 测试的文件大小。
-q 指定最大文件块大小(这里的 -q 64k 包括了4K,8K,16K,32K,64K)
-r 指测试的文件块大小(与-q有别,-r 64k只进行64k的测试)
-a 在但愿的文件系统上测试,不过只有-a的话会进行全面测试,要花费很长时间,最好用-i指定测试范围。
-g 指定最大测试文件大小。
-n 指定最小测试文件大小。
-f 指定测试文件的名字,完成后会自动删除(这个文件必须指定在你要测试的那个硬盘中)
-C 显示每一个节点的吞吐量。
-c 测试包括文件的关闭时间

-t 指定线程数

-D 对mmap文件使用msync(MS_ASYNC) 。这告诉操做系统在mmap空间的全部数据须要被异步地写到磁盘上。

-G 对mmap文件使用msync(MS_SYNC)。这告诉操做系统在mmap空间的全部数据须要被同步地写到磁盘上。



针对文件系统的测试能够按一下几项执行操做:

例:iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls

进行全面测试.最小测试文件为512M直到测试到4G.测试read,write,和Strided Read.测试的地方在mnt下。生成Excel的文件


1.多线程下的同步I/O读写测试

分别针对128K,16M,256M,2G文件大小和8进程,64进程,128进程数进行测试

主要测试文件写和重复写、读和重复读、随即读写、后向读、文件内随即点写、大间隔文件点读、文件内的随即点读写等测试项,记录大小1M cpu cache 2048kbyte。

1.1 128k 文件性能测试:

测试命令为:

iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb iozone.xls

iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb iozone.xls
iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb iozone.xls


1.2 16M文件性能测试

测试命令为:

iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb iozone.xls
iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb iozone.xls
iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb iozone.xls

1.3 256M文件性能测试

测试命令为:

iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb iozone.xls

iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb iozone.xls
iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb iozone.xls

1.4 2G文件性能测试

测试命令为:

iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb iozone.xls
iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64  -G -o -B -Rb iozone.xls
iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb iozone.xls

2.  多线程下的异步I/O读写测试

分别针对128K,16M,256M,2G文件大小和8进程,64进程,128进程数进行测试

主要测试文件写和重复写、读和重复读、随即读写、后向读、文件内随即点写、大间隔文件点读、文件内的随即点读写等测试项。

2.1 128k 文件性能测试:

测试命令为:

iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb iozone.xls
iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb iozone.xls
iozone -s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb iozone.xls

2.2 16M文件性能测试

测试命令为:
iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb iozone.xls
iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb iozone.xls
iozone -s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb iozone.xls

2.3 256M文件性能测试

测试命令为:

iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb iozone.xls
iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb iozone.xls
iozone -s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb iozone.xls

2.4 2G文件性能测试

测试命令为:

iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb iozone.xls
iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb iozone.xls
iozone -s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb iozone.xls


4、网络测试工具iperf:

Iperf  是一个网络性能测试工具。Iperf能够测试TCP和UDP带宽质量。Iperf能够测量最大TCP带宽,具备多种参数和UDP特性。Iperf能够报告带宽,延迟抖动和数据包丢失。

Iperf使用方法与参数说明

 参数说明
-s 以server模式启动,eg:iperf -s
-c host以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23
通用参数
-f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2
-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16
-m 显示tcp最大mtu值
-o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o c:\iperflog.txt
-p 指定服务器端使用的端口或客户端所链接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp协议
-w 指定TCP窗口大小,默认是8KB
-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C 兼容旧版本(当server端和client端版本不同时使用)
-M 设定TCP数据包的最大mtu值
-N 设定TCP不延时
-V 传输ipv6数据包

server专用参数
-D 以服务方式运行ipserf,eg:iperf -s -D
-R 中止iperf服务,针对-D,eg:iperf -s -R

client端专用参数
-d 同时进行双向传输测试
-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000
-r 单独进行双向传输测试
-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5
-F 指定须要传输的文件
-T 指定ttl值



5、apache ab 压力测试:

ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能, 主要是显示你安装的Apache每秒能够处理多少个请求

ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能, 主要是显示你安装的Apache每秒能够处理多少个请求。

概要

ab [ -A auth-username ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path


选项

-A auth-username:password
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 不管服务器是否须要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数能够重复。
-d
不显示"percentage served within XX [ms] table"的消息(为之前的版本提供支持)。
-e csv-file
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每一个相应百分比的请求所须要(从1%到100%)的相应百分比的(以微妙为单位)时间。 因为这种格式已经“二进制化”,因此比'gnuplot'格式更有用。
-g gnuplot-file
把全部测试结果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件能够方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-h
显示使用方法。
-H custom-header
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit").
-i
执行HEAD请求,而不是GET。
-k
启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能.
-n requests
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但一般其结果不具备表明意义。
-p POST-file
包含了须要POST的数据的文件.
-P proxy-auth-username:password
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 不管服务器是否须要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q
若是处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记能够抑制这些信息。
-s
用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S
不显示中值和标准背离值, 并且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为之前的版本提供支持).
-t timelimit
测试所进行的最大秒数。其内部隐含值是-n 50000。 它可使对服务器的测试限制在一个固定的总时间之内。默认时,没有时间限制。
-T content-type
POST数据所使用的Content-type头信息。
-v verbosity
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值能够显示响应代码(404, 200等), 2或更大值能够显示警告和其余信息。
-V
显示版本号并退出。
-w
以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
设置<table>属性的字符串。 此属性被填入<table 这里 >.
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
设置<tr>属性的字符串.
-z <td>-attributes
设置<td>属性的字符串.


例:ab -c 1000 -n 1000  http://127.0.0.1/sw3560/index.html


This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        Apache/2.2.3
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /sw3560/index.html
Document Length:        5767 bytes

Concurrency Level:      1000              #并发的用户数
Time taken for tests:   3.85301 seconds   #表示全部这些请求被处理完成所花费的时间总和Complete requests:      1000             
Failed requests:        0
Write errors:           0
Total transferred:      6034000 bytes     #全部请求的响应数据长度总和

HTML transferred:       5767000 bytes     #全部请求的响应数据中正文数据的总和

Requests per second:    324.12 [#/sec] (mean)     #重点:吞吐率,他等于Complete requests / Time taken for tests(至关于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值)

Time per request:       3085.301 [ms] (mean)      #用户平均请求等待时间,他等于Time taken for tests /(Complete requests / Concurrency Level)【至关于 LR 中的 平均事务响应时间】

Time per request:       3.085 [ms] (mean, across all concurrent requests)

                                                         #服务器平均请求处理时间他等于Time taken for tests / Complete requests (每一个请求实际运行时间的平均值)
Transfer rate:          1909.70 [Kbytes/sec] received
                                                  #请求在单位时间内从服务器获取数据的长度他等于Total transferred / Time taken for tests 这个统计选项能够很好的说明服务器在处理能力达到极限时其出口带宽的需求量
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   30  16.6     30      59
Processing:    21  924 975.9    612    3027
Waiting:       20  923 976.0    612    3026
Total:         21  954 987.4    637    3084

Percentage of the requests served within a certain time (ms)
  50%    637
  66%   1437
  75%   1455
  80%   1462
  90%   3068
  95%   3076
  98%   3081
  99%   3083
 100%   3084 (longest request)

#用于描述每一个请求处理时间的分布状况,例如:50%  1 50%请求处理时间不超过1秒 (这里所指的处理时间是指:Time per request )

本文转载:http://wushank.blog.51cto.com/3489095/1585927 

 

 

 

 

 

硬盘读写速度测试

 

 

8核8G,普通PC硬盘

测试的时候基本上没开什么东西

写:

[root@localhost home]# time dd if=/dev/sda2 of=test.txt bs=80k count=100000

记录了100000+0 的读入

记录了100000+0 的写出

8192000000字节(8.2 GB)已复制,134.755 秒,60.8 MB/秒


real2m14.947s

user0m0.040s

sys0m7.466s


[root@localhost home]# time dd if=/dev/sda2 of=test.txt bs=80k count=100000

记录了100000+0 的读入

记录了100000+0 的写出

8192000000字节(8.2 GB)已复制,137.08 秒,59.8 MB/秒


real2m17.140s

user0m0.051s

sys0m7.505s

#iostat -xkd 1

wKiom1R-c1uyufabAAOMM1Bbk9k258.jpg


       rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

       wrqm/s: 每秒对该设备的写请求被合并次数

       r/s: 每秒完成的读次数

       w/s: 每秒完成的写次数

       rkB/s: 每秒读数据量(kB为单位)

       wkB/s: 每秒写数据量(kB为单位)

       avgrq-sz:平均每次IO操做的数据量(扇区数为单位)

       avgqu-sz: 平均等待处理的IO请求队列长度

       await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

       svctm: 平均每次IO请求的处理时间(毫秒为单位)

       %util: 采用周期内用于IO操做的时间比率,即IO队列非空的时间比


若是 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle
小于70% IO压力就较大了,通常读取速度有较多的wait.


读取:

dd if=test.txt bs=80k count=100000 of=/dev/null

[root@localhost home]# dd if=test.txt bs=80k count=100000 of=/dev/null

记录了100000+0 的读入

记录了100000+0 的写出

8192000000字节(8.2 GB)已复制,61.7508 秒,133 MB/秒


[root@localhost home]# dd if=test.txt bs=80k count=100000 of=/dev/null

记录了100000+0 的读入

记录了100000+0 的写出

8192000000字节(8.2 GB)已复制,60.1842 秒,136 MB/秒


[root@localhost home]# dd if=test.txt bs=80k count=100000 of=/dev/null

记录了100000+0 的读入

记录了100000+0 的写出

8192000000字节(8.2 GB)已复制,65.6983 秒,125 MB/秒

wKioL1R-eXLDeaSNAAHpduckf5o262.jpgwKioL1R-egaSI4VfAADZufsTWFA341.jpg

计算写入与读取的平均值能够,查看磁盘I/O压力,每秒的读取.

 

 

 

 

 

Linux 三个强大的系统资源监控工具

 

一、dstat

dstat是取代vmstat,iostat和ifstat的一个强大的多功能系统资源统计生成工具。

dstat语法格式:

    dstat [-afv] [options..] [delay [count]]

经常使用选项:

    -a,--all:等同于-cdngy(默认)

    -c,--cpu:仅显示CPU状态统计信息

    -C 0,1,total:显示指定CPU状态统计信息和汇总信息,还包括其它资源的统计信息

    -d,--disk:仅显示全部磁盘读写汇总信息

    -D sda,totall:显示指定磁盘读写信息和汇总信息

    -m,--mem:仅显示物理内存的使用状况

    -s,--swap:仅显示交换分区的使用状况

    -n,--net:仅显示网络的使用信息

    -N eth0,total:显示指定网卡的统计信息以及全部网卡的汇总统计信息

    -p,--proc: 统计进程相关信息

    -r,--io:统计I/O请求相关信息,包括读写信息

    -y,--sys : 统计系统(内核)信息,包括系统中断和上下文切换等信息

    -g,--page : 统计页面使用状况

    -l,--load : 显示当前系统负载统计信息

    -t,--time :显示统计信息的那一刻时间

    --top-cpu:显示最占用CPU的进程

    --top-mem : 显示最消耗内存的进程

    --top-bio :显示最占用块设备IO的进程

    --top-io: 显示最占用IO的进程

    --aio:统计IO异步信息

    --ipc: 统计进程间统统相关信息

    --raw:统计raw套接字信息

    --tcp:统计tcp套接字信息

    --upd:统计upd套接字信息

    --socket:统计全部套接字信息,包括以上三项

来几个具体的操做:

延时一秒,显示CPU的汇总信息:

clip_p_w_picpath001

usr:表示用户占用CPU的时间百分比

sys:表示内核占用CPU的时间百分比

idl:即idle,表示CPU空闲时间百分比

wai:表示等待IO消耗的时间百分比

hiq:表示硬件中断占用的时间百分比

siq:表示软件中断点用的时间百分比


延时一秒,显示指定某个CPU的统计信息:

clip_p_w_picpath002


延时一秒,显示磁盘的统计信息:

clip_p_w_picpath003


延时一秒,显示内存的统计信息:

clip_p_w_picpath004

used:表示已使用内存大小

buff:表示用做缓冲的内存大小

cach:表示用做缓存的内存大小

free:表示空闲内存大小


延时一秒,显示最占资源的进程:

clip_p_w_picpath005

更多高级用法:man dstat


二、htop

htop是一个交互式实时监控系统资源使用状况的工具,它是top的增长版,比top显示的信息更加友好。

另,htop命令须要经过epel源安装才能使用;

htop语法格式:

    htop [options]

经常使用选项:

    -d:延时多少秒更新一次,默认10秒更新一次

    -u:指定只显示某个用户的进程

    -s COLUMN:以指定字段进行排序显示

经常使用交互式命令:

    u:仅显示指定用户的进程

    s:跟踪指定进程的系统调用

    l:跟踪指定进程打开的文件

    t:显示进程树

    P:按CPU字段进行排序

    M:按内存字段进行排序

    Space:标志某个进程

       U:取消标志某个进程

显示指定用户的全部进程:

按下字母u,而后选择用户

clip_p_w_picpath006


按占用内存大小字段进行排序

clip_p_w_picpath007

更多用法:man htop


三、glances

glances 是一款用于 Linux、BSD 的开源命令行系统监视工具,它使用 Python 语言开发,可以监视 CPU、负载、内存、磁盘 I/O、网络流量、文件系统、系统温度等信息。

glances语法格式:

glances [options]

经常使用选项:

    -b:以Byte字节为单位显示网卡数据速率

    -t:指定多少秒刷新一次统计信息

    -d:不显示磁盘信息打开glcances

    -m:不显示已挂载文件系统信息打开glances

    -n:不显示网络信息打开glances

    -o:指定以HTML或CSV格式输出统计信息

    -f:指定输出HTML或CSV文件的目录

经常使用交互式命令:

    d:显示/不显示磁盘I/O状态信息

    f:显示/不显示文件系统状态信息

    n:显示/不显示网络状态信息

    q:退出

glances还可运行为服务端和客户端,以下:

clip_p_w_picpath008

经过客户端可链接到服务端:

clip_p_w_picpath009

clip_p_w_picpath010


glances输出保存为HTML格式文件,经过浏览器查看:

clip_p_w_picpath011

clip_p_w_picpath012



另,来一张glances命令监控资源主界面以下:

clip_p_w_picpath013

帮助信息能够按h获取:

clip_p_w_picpath014

本文转载:http://qqtang.blog.51cto.com/9608761/1582967

相关文章
相关标签/搜索