张成岗(CZ)的博客世界分享 http://blog.sciencenet.cn/u/zcgweb 脑损伤与脑保护;神经认知;生物信息;蛋白质组;辐射损伤与防护

博文

[转载]linux下的CPU、内存、IO、网络的压力测试工具与方法介绍

已有 3558 次阅读 2021-3-8 10:24 |系统分类:科研笔记|文章来源:转载

https://blog.csdn.net/YINHAOXU1/article/details/72868888


linux下的CPU、内存、IO、网络的压力测试工具与方法介绍


Winhole 2017-06-05 16:52:50   24988   收藏 21

分类专栏: Linux 文章标签: linux 测试

版权

 


一、对CPU进行简单测试:


1、通过bc命令计算特别函数


例:计算圆周率


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


2.我工作中一般用一个死循环进行cpu占用,这样可以比较持续,简单粗暴的进行~~


 while [ 1 ]

  do

    echo 1 >> /dev/null  

  done


或者 while [ 1 ];do : ;done 


如果多核那么多执行几次~~


 


二、对内存进行简单测试:


方式一:


工具:memtester

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

用法:Usage: ./memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]

 


方式二:


做一些应用的启动,文件的读写测试 来模拟


 


三、对IO进行简单测试:


1、利用dd来进行测试:


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


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


 


2、使用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 


3、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).


iozone还可以多机并发测试,有兴趣的可以了解一下


 


参数:


针对文件系统的测试可以按一下几项执行操作:


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


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


要验证正确性的话,可以加上 -+d


 


 


使用的脚本:


#!/bin/bash

io102cmd=/eric/iozone

HOSTNAME=`hostname`

DATE=`date +%Y-%m-%d-%H`

IP=`cat /etc/sysconfig/network-scripts/ifcfg-enp8s0 |grep "IPADDR" |awk -F '=' '{print $2}'`

RECSIZE=1m

THREADS=24              #max maximum value 254  disks*loops=THREADS(36*7=252)

FILESIZE=12g    #test data block mul disks ej:850g*36=30600g

LOG=/datapool/log/${DATE}_${HOSTNAME}_io102zone_${IP}_${RECSIZE}_${FILESIZE}_${THREADS}

i=0                     #loop counts form 0 - 6 



while [ $i -lt 2 ]

do

FILE1=" /datapool/io102/a${i} /datapool/io102/b${i} /datapool/io102/c${i} /datapool/io102/d${i} /datapool/io102/e${i} /datapool/io102/f${i} /datapool/io102/g${i} /datapool/io102/h${i} /datapool/io102/i${i} /datapool/io102/j${i} /datapool/io102/k${i} /datapool/io102/l${i} ${FILE1} "

i=` expr $i + 1 `

done


while [ 1 ]

do

echo $FILE1


$io102cmd  -r ${RECSIZE} -s ${FILESIZE} -t ${THREADS} -F ${FILE1} -i 0 -i 1 -+n -w -+k -R -b report.xls -c -C -e >> $LOG

done


 


 


四、网络测试工具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 1.1.1.1 -n 100000

-r 单独进行双向传输测试

-t 测试时间,默认10秒,eg:iperf -c 1.1.1.1 -t 5

-F 指定需要传输的文件

-T 指定ttl值


 


2.还有一个netperf 类似


netperf


1、下载地址:

wget  ftp://ftp.netperf.org/netperf/netperf-2.5.0.tar.gz

2、参考资料:

http://baike.baidu.com/view/3506574.htm?fr=ala0_1_

3、功能介绍

man 说明

Netperf  is  a benchmark that can be used to measure various aspects of networking performance.  Currently, its focus is on bulk data  transfer and  request/response  performance  using  either  TCP  or UDP, and the  Berkeley Sockets interface. In  addition,  tests  for  DLPI,  and  Unix Domain Sockets, tests for IPv6 may be conditionally compiled-in.

3.1、对TCP(缺省情况下进行TCP批量传输,即-t TCP_STREAM),Netperf可以模拟三种不同的TCP流量模式:


  1) 单个TCP连接,批量(bulk)传输大量数据,测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量(附录6)

2) 单个TCP连接,client请求/server应答的交易(transaction)方式(附录8)

3) 多个TCP连接,每个连接中一对请求/应答的交易方式(附录9


3.2、对UDP(指定-t UDP_STREAM),Netperf可以模拟两种UDP的流量模式:

  1) 从client到server的单向批量传输 (附录7

2) 请求/应答的交易方式(附录10)


 


参考地址:http://qa.blog.163.com/blog/static/1901470022011102543322445/ 


 

————————————————

版权声明:本文为CSDN博主「Winhole」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/YINHAOXU1/article/details/72868888 




https://blog.sciencenet.cn/blog-40692-1275541.html

上一篇:[转载]关于Linux中使用bc命令计算圆周率(π):可以计算上千位或上万位,顺便评测CPU的计算能力
下一篇:[转载]性能基准测试工具:UnixBench
收藏 IP: 124.207.31.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 01:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部