linux下的CPU、内存、IO、网络的压力测试工具与方法介绍
一、对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/
其他服务器协议性能或者压力
可以使用开源的jmeter 下次再做介绍
linux下的CPU、内存、IO、网络的压力测试工具与方法介绍相关推荐
- linux 内存强度测试软件,linux下的CPU、内存、IO、网络的压力测试工具与方法介绍...
使用工具stress Centos # yum -y install stress Ubantu # apt-get install stress # stress --help `stress' i ...
- linux下的CPU、内存、IO、网络的压力测试工具与方法
一.CPU压力测试工具Super Pi forLinux Super PI是利用CPU的浮点运算能力来计算出π(圆周率),所以目前普遍被超频玩家用做测试系统稳定性和测试CPU计算完后特定位数圆周率所需 ...
- linux内存跑分,RaspberryPi 4B 4G版本跑分测|CPU|内存|IO|网络|性能全面测试
前言 拿到手最新的RaspberryPi 4B 4G版本,新版本的4修复了之前的硬件bug. 直接官方安装软件刷上了最新版本的Linux raspberrypi 4.19.97,MicroSD卡选用的 ...
- Linux下查看某个进程打开的文件数-losf工具常用参数介绍
Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还 ...
- Thinkpad在Linux下指点杆和无线网络的配置和故障解决方法
型号是Thinkpad R60i,系统为Fedora Linux 11,内核版本号:2.6.30.10 一.trackpoint 指点杆的调整 1.灵敏度的调整: 前文:指点杆(小红帽)是我最喜欢小黑 ...
- Linux下查看CPU/内存/硬盘的shell命令
1.cpu查看 1)cpu个数:#cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2)cpu核数:#cat /proc/ ...
- 虚拟化技术简介--CPU/内存/IO/网络虚拟化介绍
1. 概述 本文讨论的虚拟化,是指将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响. 2. ...
- linux查看内存的生产商,linux下查看CPU.内存型号.pci 转自《Ivan-blog》
cat /proc/cpuinfo | grep 'physical id' physical id : 0 physical id : 0 physical id : 0 physical id : ...
- linux下给CPU增加指定百分比的压力
场景和目的 一台计算机会因为当前CPU的占率不同情况表现出不同的稳定性和实时性以及其他性能情况.需要编写一个程序将一个CPU或者多个CPU占用到指定值的占用率,比如50%.很多工具都是直接一颗CPU占 ...
最新文章
- 【Java】leetCode 21 合并两个有序链表
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...
- 机器学习研究今年谁最火?几何深度学习成最大赢家,Reddit为提名选手吵成一团...
- idea启动webservice_idea使用springboot的webservice基于cxf
- spring整合CXF
- enet分割_论文阅读 | CVPR 2016 | 语义分割论文: ENet
- OFFICE EXCEL表格中让A1 中的数字为变量时,如何引用
- python是什么语言-Python是什么?为什么现在越来越多的人选择学习Python语言
- Go编程笔记(28)
- centos eclipse php,centos打不开eclipse怎么办?
- SSH/SSH客户端介绍、利用SSH访问linux、SSH跟telnet区别
- 生信必备技巧之R语言基础教程03——逻辑数据用途及字符串处理
- TFT液晶屏-真彩色高亮度高分辨率的液晶显示屏
- 怎么样设计好看的logo?教你6步学会logo设计
- 风陵渡口初相遇,一见杨过误终身
- 5 个改善代码可读性的方法
- KEIL、uVision、RealView、MDK、KEIL C51区别
- 采药问题 c语言程序,采药 题解
- XML Publisher介绍
- 奶爸日记24 白砂糖