[转帖]linux下的CPU、内存、IO、网络的压力测试
一、对CPU进行简单测试:
1、通过bc命令计算特别函数
例:计算圆周率
echo "scale=5000; 4*a(1)" | bc -l -q
-,.
.
:
s(x),.正玄函数
c(x),.余玄函数
a(x),ians.反正切函数
l(x)fx.log函数(以2为底)
e(x)uex.e的指数函数
j(n,x) .贝塞尔函数
2、工具二:Super Pi for linux
Super PI是利用CPU的浮点运算能力来计算出π(圆周率),所以目前普遍被超频玩家用做测试系统稳定性和测试CPU计算完后特定位数圆周率所需的时间。
下载页:ftp:///
:///Linux/.tar.gz
tar -xzvf .tar.gz
./ 20
20为位数。表示要算2的多少次方位,如通常要算小数点后1M位。
二、对内存进行简单测试:
工具:
官方:
wget
tar -xzvf -4.3.0.tar.gz
cd -4.3.0
make && make
用法:Usage: ./ [-p [-d ]] [B|K|M|G] [loops]
例: 1G5
三、对IO进行简单测试:
1、利用dd来进行测试:
time dd if=/dev/==1M count=4096
用top和查看wa%及写硬盘速度
2、使用fio命令进行测试:
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,
包括:sync,mmap, , , SG v3, , null, , , guasi, 等等。
说明:
=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
=1 测试过程绕过机器自带的。使测试结果更真实。
rw= 测试随机写的I/O
rw= 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
=30 本次的测试线程为30.
=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
=psync io引擎使用pync方式
=30 在混合读写的模式下,写占30%
关于显示结果的,汇总每个进程的信息。
此外
=1g 只使用1g内存进行测试。
用0初始化系统。
=8 每个进程生成文件的数量。
随机读:
fio --=/dev/sda3 --=1 -- 1 -- --rw= --=psync --bs=4k --size=2G --=10 --=100 -- --name=
顺序读:
fio --=/dev/sda3 --=1 -- 1 -- --rw=read --=psync --bs=4k --size=2G --=10 --=100 -- --name=
随机写:
fio --=/dev/sda3 --=1 -- 1 -- --rw= --=psync --bs=4k --size=2G --=10 --=100 -- --name=
顺序写:
fio --=/dev/sda3 --=1 -- 1 -- --rw=write --=psync --bs=4k --size=2G --=10 --=100 -- --name=
混合随机读写:
fio --=/dev/sda3 --=1 -- 1 -- --rw= --=70 --=psync --bs=4k --size=2G --=10 --=100 -- --name= --=noop
3、测试
主要用来测试操作系统文件系统性能的测试工具,该工具所测试的范围主要有,write , Re-write, Read, Re-Read, Read, Write, Mix, Read, , Read, , , Fread, , Mmap, Async I/O
使用可以在多线程、多cpu,并指定cpu cache空间大小以及同步或异步I/O读写模式的情况下进行测试文件操作性能;
(0=write/, 1=read/re-read, 2=-read/write
3=Read-, 4=Re-write-, 5=-read, 6=/re-, 7=fread/Re-fread,
8= mix, 9=/Re-, 10=pread/Re-pread, 11=/Re-, 12=/Re-).
Write: 测试向一个新文件写入的性能。当一个新文件被写入时,不仅仅是那些文件中的数据需要被存储,还包括那些用于定位数据存储在存储介质的具体位置的额外信息。这些额外信息被称作“元数据”。它包括目录信息,所分配的空间和一些与该文件有关但又并非该文件所含数据的其他数据。拜这些额外信息所赐,Write的性能通常会比Re-write的性能低。
Re-write: 测试向一个已存在的文件写入的性能。当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在。Re-write的性能通常比Write的性能高。
Read: 测试读一个已存在的文件的性能。
Re-Read: 测试读一个最 近读过的文件的性能。Re-Read性能会高些,因为操作系统通常会缓存最 近读过的文件数据。这个缓存可以被用于读以提高性能。
Read: 测试读一个文件中的随机偏移量的性能。许多因素都可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Write: 测试写一个文件中的随机偏移量的性能。同样,有许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Mix: 测试读写一个文件中的随机偏移量的性能。许多因素可能影响这种情况下的系统性能运作,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。这个测试只有在吞吐量测试模式下才能进行。每个线程/进程运行读或写测试。这种分布式读/写测试是基于round robin 模式的。最好使用多于一个线程/进程执行此测试。
Read: 测试使用倒序读一个文件的性能。这种读文件方法可能看起来很可笑,事实上,有些应用确实这么干。MSC 是一个使用倒序读文件的应用程序的一个例子。它所读的文件都十分大(大小从G级别到T级别)。尽管许多操作系统使用一些特殊实现来优化顺序读文件的速度,很少有操作系统注意到并增强倒序读文件的性能。
: 测试写与覆盖写一个文件中的特定块的性能。这个块可能会发生一些很有趣的事。如果这个块足够小(比CPU数据缓存小),测出来的性能将会非常高。如果比CPU数据缓存大而比TLB小,测出来的是另一个阶段的性能。如果比此二者都大,但比操作系统缓存小,得到的性能又是一个阶段。若大到超过操作系统缓存,又是另一番结果。
Read: 测试跳跃读一个文件的性能。举例如下:在0偏移量处读,然后间隔,读,再间隔,如此反复。此时的模式是读,间隔并重复这个模式。这又是一个典型的应用行为,文件中使用了数据结构并且访问这个数据结构的特定区域的应用程序常常这样做。
许多操作系统并没注意到这种行为或者针对这种类型的访问做一些优化。同样,这种访问行为也可能导致一些有趣的性能异常。一个例子是在一个数据片化的文件系统里,应用程序的跳跃导致某一个特定的磁盘成为性能瓶颈。
: 测试调用库函数()来写文件的性能。这是一个执行缓存与阻塞写操作的库例程。缓存在用户空间之内。如果一个应用程序想要写很小的传输块,()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。
这个测试是写一个新文件,所以元数据的写入也是要的。
:测试调用库函数()来写文件的性能。这也是一个执行缓存与阻塞写操作的库例程。是缓存在用户空间之内。如果一个应用程序想要写很小的传输块,()函数中的缓存与阻塞I/O功能可以通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。
这个测试是写入一个已存在的文件,由于无元数据操作,测试的性能会高些。
Fread:测试调用库函数fread()来读文件的性能。这是一个执行缓存与阻塞读操作的库例程。缓存在用户空间之内。如果一个应用程序想要读很小的传输块,()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小从而增强应用程序的性能。
几个特殊测试:
Mmap:许多操作系统支持mmap()的使用来映射一个文件到用户地址空间。映射之后,对内存的读写将同步到文件中去。这对一些希望将文件当作内存块来使用的应用程序来说很方便。一个例子是内存中的一块将同时作为一个文件保存在于文件系统中。
工具:
官方:
wget
tar -xvf .tar
cd /src/
make
make linux-ia64
参数:
针对文件系统的测试可以按一下几项执行操作:
例: -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/ -Rb ./.xls
进行全面测试.最小测试文件为512M直到测试到4G.测试read,write,和 Read.测试的地方在mnt下。生成Excel的文件
1.多线程下的同步I/O读写测试
分别针对128K,16M,256M,2G文件大小和8进程,64进程,128进程数进行测试
主要测试文件写和重复写、读和重复读、随即读写、后向读、文件内随即点写、大间隔文件点读、文件内的随即点读写等测试项,记录大小1M cpu cache 。
1.1 128k 文件性能测试:
测试命令为:
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb .xls
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb .xls
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb .xls
1.2 16M文件性能测试
测试命令为:
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb .xls
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb .xls
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb .xls
1.3 256M文件性能测试
测试命令为:
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb .xls
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb .xls
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb .xls
1.4 2G文件性能测试
测试命令为:
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -G -o -B -Rb .xls
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -G -o -B -Rb .xls
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -G -o -B -Rb .xls
2. 多线程下的异步I/O读写测试
分别针对128K,16M,256M,2G文件大小和8进程,64进程,128进程数进行测试
主要测试文件写和重复写、读和重复读、随即读写、后向读、文件内随即点写、大间隔文件点读、文件内的随即点读写等测试项。
2.1 128k 文件性能测试:
测试命令为:
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb .xls
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb .xls
-s 128k -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb .xls
2.2 16M文件性能测试
测试命令为:
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb .xls
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb .xls
-s 16M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb .xls
2.3 256M文件性能测试
测试命令为:
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb .xls
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb .xls
-s 256M -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb .xls
2.4 2G文件性能测试
测试命令为:
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 8 -D -o -B -Rb .xls
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 64 -D -o -B -Rb .xls
-s 2G -i 0 -i 1 -i 2 -i 3 -i 4 -i 5 -i 8 -t 128 -D -o -B -Rb .xls
四、网络测试工具iperf:
Iperf 是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。
Iperf使用方法与参数说明
参数说明
专用参数
端专用参数
五、 ab 压力测试:
ab是超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的的执行性能, 主要是显示你安装的每秒可以处理多少个请求
ab是超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的的执行性能, 主要是显示你安装的每秒可以处理多少个请求。
概要
ab [ -A auth- ] [ -c ] [ -C -name=value ] [ -d ] [ -e csv-file ] [ -g -file ] [ -h ] [ -H - ] [ -i ] [ -k ] [ -n ] [ -p POST-file ] [ -P proxy-auth- ] [ -q ] [ -s ] [ -S ] [ -t ] [ -T -type ] [ -v ] [ -V ] [ -w ] [ -x - ] [ -X proxy[] ] [ -y - ] [ -z - ] [][:port]/path
选项
-A auth-:
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c
一次产生的请求个数。默认是一次一个。
-C -name=value
对请求附加一个:行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-d
不显示" XX [ms] table"的消息(为以前的版本提供支持)。
-e csv-file
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比''格式更有用。
-g -file
把所有测试结果写入一个''或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到, IDL, , Igor甚至Excel中。 其中的第一行为标题。
-h
显示使用方法。
-H -
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "-: zip/zop;8bit").
-i
执行HEAD请求,而不是GET。
-k
启用HTTP 功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用功能.
-n
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。
-p POST-file
包含了需要POST的数据的文件.
-P proxy-auth-:
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q
如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在输出一个进度计数。 此-q标记可以抑制这些信息。
-s
用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S
不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持).
-t
测试所进行的最大秒数。其内部隐含值是-n 50000。 它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T -type
POST数据所使用的-type头信息。
-v
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-V
显示版本号并退出。
-w
以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x -
设置属性的字符串。 此属性被填入.
-X proxy[:port]
对请求使用代理服务器。
-y -
设置属性的字符串.
-z -
设置属性的字符串.
例:ab -c 1000 -n 1000
This is , 2.0.40-dev -2.0