1.hdparm
2.dd
3.sysbench
4.CPU简单测试
5.nmon
6.sar 监控CPU、内存、网卡
1.hdparm
hdparm是一个命令行工具,用于读取和设置IDE或SCSI硬盘参数。可以用来测试磁盘I/O读取性能。
安装
# yum install -y hdparm使用
关键参数-T和-t
-T
用于以基准测试和比较为目的的缓存读取计时。要得到有意义的结果,应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次。
它显示了不存取磁盘直接从Linux缓存读取数据的速度。该测试实际上检测了被测系统的处理器,缓存和内存的吞吐量。
如果标志"-t"也被指定,那么一个基于"-T"输出结果的修正量将被综合到"-t"操作报告的结果中。
-t
用于以基准测试和比较为目的的缓存读取计时。要得到有意义的结果,应该在内存不少于2M,系统没有其它活动(没有其它活动的程序)的条件下,重复操作2-3次。
它显示了不使用预先的数据缓冲从磁盘这项测量检测了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取。
为确保测量的精确,缓存在"-t"的过程中通过BLKFLSBUF控制被刷新。如果标志"-T"也被指定,那么一个基于"-T"数促结果的修正量将被综合到"-t"操作报告的结果中。
# hdparm -T /dev/sda
/dev/sda:Timing cached reads: 14866 MB in 2.00 seconds = 7441.38 MB/sec
# hdparm -t /dev/sda
/dev/sda:Timing buffered disk reads: 6146 MB in 3.00 seconds = 2047.04 MB/sec
# hdparm -tT /dev/sda
/dev/sda:Timing cached reads: 14794 MB in 2.00 seconds = 7404.78 MB/sec
Timing buffered disk reads: 6422 MB in 3.00 seconds = 2140.42 MB/sec
其他常用命令
查看硬盘参数:
# hdparm /dev/sda
/dev/sda:SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
multcount = 0 (off)
readonly = 0 (off)
readahead = 8192 (on)
geometry = 65270[柱面数]/255[磁头数]/63[扇区数], sectors = 1048576000[总扇区数], start = 0[起始扇区数]
检测硬盘的电源管理模式
# hdparm -C /dev/sda
/dev/sda:SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
drive state is: standby
查询并设置硬盘多重扇区存取的扇区数,以增进硬盘的存取效率:
# hdparm -m /dev/sda
/dev/sda:SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
multcount = 0 (off)
# hdparm -m 8 /dev/sda
查看当前硬盘写Cache状态
# hdparm -W /dev/sda
/dev/sda:SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
write-caching = not supported
关闭硬盘的写Cache
# hdparm -W 0 /dev/sda
打开硬盘的写Cache
# hdparm -W 1 /dev/sda查看帮助
# hdparm -h
hdparm [options] [device ...]
device:设备文件,指定id驱动对应的设备文件名,可以通过 fdisk -l查看设备文件。例如: /dev/sda3
Options:
-a Get/set fs readahead
-A Get/set the drive look-ahead flag (0/1)
-b Get/set bus state (0 == off, 1 == on, 2 == tristate)
-B Set Advanced Power Management setting (1-255)
-c Get/set IDE 32-bit IO setting
-C Check drive power mode status
-d Get/set using_dma flag
-D Enable/disable drive defect management
-E Set cd/dvd drive speed
-f Flush buffer cache for device on exit
-F Flush drive write cache
-g Display drive geometry
-h Display terse usage information
-H Read temperature from drive (Hitachi only)
-i Display drive identification
-I Detailed/current information directly from drive
-J Get/set Western DIgital "Idle3" timeout for a WDC "Green" drive (DANGEROUS)
-k Get/set keep_settings_over_reset flag (0/1)
-K Set drive keep_features_over_reset flag (0/1)
-L Set drive doorlock (0/1) (removable harddisks only)
-m Get/set multiple sector count
-M Get/set acoustic management (0-254, 128: quiet, 254: fast)
-n Get/set ignore-write-errors flag (0/1)
-N Get/set max visible number of sectors (HPA) (VERY DANGEROUS)
-p Set PIO mode on IDE interface chipset (0,1,2,3,4,...)
-P Set drive prefetch count
-q Change next setting quietly
-Q Get/set DMA queue_depth (if supported)
-r Get/set device readonly flag (DANGEROUS to set)
-R Get/set device write-read-verify flag
-s Set power-up in standby flag (0/1) (DANGEROUS)
-S Set standby (spindown) timeout
-t Perform device read timings
-T Perform cache read timings
-u Get/set unmaskirq flag (0/1)
-U Obsolete
-v Use defaults; same as -acdgkmur for IDE drives
-V Display program version and exit immediately
-w Perform device reset (DANGEROUS)
-W Get/set drive write-caching flag (0/1)
-x Obsolete
-X Set IDE xfer mode (DANGEROUS)
-y Put drive in standby mode
-Y Put drive to sleep
-z Re-read partition table
-Z Disable Seagate auto-powersaving mode
--dco-freeze Freeze/lock current device configuration until next power cycle
--dco-identify Read/dump device configuration identify data
--dco-restore Reset device configuration back to factory defaults
--direct Use O_DIRECT to bypass page cache for timings
--drq-hsm-error Crash system with a "stuck DRQ" error (VERY DANGEROUS)
--fallocate Create a file without writing data to disk
--fibmap Show device extents (and fragmentation) for a file
--fwdownload Download firmware file to drive (EXTREMELY DANGEROUS)
--fwdownload-mode3 Download firmware using min-size segments (EXTREMELY DANGEROUS)
--fwdownload-mode3-max Download firmware using max-size segments (EXTREMELY DANGEROUS)
--fwdownload-mode7 Download firmware using a single segment (EXTREMELY DANGEROUS)
--idle-immediate Idle drive immediately
--idle-unload Idle immediately and unload heads
--Istdin Read identify data from stdin as ASCII hex
--Istdout Write identify data to stdout as ASCII hex
--make-bad-sector Deliberately corrupt a sector directly on the media (VERY DANGEROUS)
--offset use with -t, to begin timings at given offset (in GiB) from start of drive
--prefer-ata12 Use 12-byte (instead of 16-byte) SAT commands when possible
--read-sector Read and dump (in hex) a sector directly from the media
--repair-sector Alias for the --write-sector option (VERY DANGEROUS)
--security-help Display help for ATA security commands
--trim-sector-ranges Tell SSD firmware to discard unneeded data sectors: lba:count ..
--trim-sector-ranges-stdin Same as above, but reads lba:count pairs from stdin
--verbose Display extra diagnostics from some commands
--write-sector Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)
-a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定;
-A<0或1>:启动或关闭读取文件时的快取功能;-c:设定IDE32位I/O模式;
-C:检测IDE硬盘的电源管理模式;
-d<0或1>:设定磁盘的DMA模式;
-f:将内存缓冲区的数据写入硬盘,并清楚缓冲区;
-g:显示硬盘的磁轨,磁头,磁区等参数;
-h:显示帮助;
-i:显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供;
-I:直接读取硬盘所提供的硬件规格信息;
-k<0或1>:重设硬盘时,保留-dmu参数的设定;
-K<0或1>:重设硬盘时,保留-APSWXZ参数的设定;
-m<磁区数>:设定硬盘多重分区存取的分区数;
-n<0或1>:忽略硬盘写入时所发生的错误;
-p:设定硬盘的PIO模式;
-P<磁区数>:设定硬盘内部快取的分区数;
-q:在执行后续的参数时,不在屏幕上显示任何信息;
-r<0或1>:设定硬盘的读写模式;
-S<时间>:设定硬盘进入省电模式前的等待时间;
-t:评估硬盘的读取效率(不使用预先的数据缓冲,而从磁盘连续读取的速度);
-T:评估硬盘快取的读取效率(不读取磁盘,直接从Linux缓存读取数据的速度);
-u<0或1>:在硬盘存取时,允许其他中断要求同时执行;
-v:显示硬盘的相关设定;
-w<0或1>:设定硬盘的写入快取;
-X<传输模式>:设定硬盘的传输模式;
-y:使IDE硬盘进入省电模式;
-Y:使IDE硬盘进入睡眠模式;
-Z:关闭某些Seagate硬盘的自动省电功能。
2.dd
安装:Centos7默认系统自带。
# dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]
参数说明:
bs=<字节数> 将ibs( 输入)与obs(输出)设成指定的字节数。cbs=<字节数> 转换时,每次只转换指定的字节数。
conv=<关键字> 指定文件转换的方式。
count=<区块数> 仅读取指定的区块数。
ibs=<字节数> 每次读取的字节数。
if=<文件> 从文件读取。
obs=<字节数> 每次输出的字节数。
of=<文件> 输出到文件。
seek=<区块数> 一开始输出时,跳过指定的区块数。
skip=<区块数> 一开始读取时,跳过指定的区块数。
--help 帮助。
--version 显示版本信息。
if=xxx 从xxx读取,如if=/dev/zero,该设备无穷尽地提供0(不产生读磁盘IO)。
of=xxx 向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件。所有写入它的内容都会永远丢失(不产生写磁盘IO)
bs=8k 每次读或写的大小,即一个块的大小。
count=xxx 读写块的总数量。
注意:避免操作系统“写缓存”干扰测试结果,使用sync、fsync、fdatasync。
测试磁盘的IO读速度
# df -m
Filesystem 1M-blocks Used Available Use% Mounted on/dev/mapper/centos-root 477971 5492 472480 2% /
devtmpfs 3903 0 3903 0% /dev
tmpfs 3912 1 3912 1% /dev/shm
tmpfs 3912 17 3896 1% /run
tmpfs 3912 0 3912 0% /sys/fs/cgroup
/dev/sda1 1014 133 882 14% /boot
使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入2k的数据,总共写入100万次,产生2G大小的文件
# dd if=/dev/zero of=/test/test.dbf bs=2k count=1000000 conv=fdatasync
1000000+0 records in1000000+0 records out
2048000000 bytes (2.0 GB) copied, 2.90199 s, 706 MB/s
测试磁盘的IO写速度
# time dd if=/dev/zero of=/test/test.dbf bs=2k count=1000000
1000000+0 records in1000000+0 records out
2048000000 bytes (2.0 GB) copied, 2.24934 s, 910 MB/s
测试IO同时读和写的速度
# time dd if=/dev/sda1 of=/test/test.dbf bs=2k
524288+0 records in524288+0 records out
1073741824 bytes (1.1 GB) copied, 1.31588 s, 816 MB/s
real 0m1.317s
user 0m0.042s
sys 0m1.275s
3.sysbench
CPU性能测试
# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=8 run内存性能测试
# sysbench --test=memory --num-threads=8 --memory-block-size=8192 --memory-total-size=2G run
磁盘I/O性能测试
# sysbench --test=fileio --num-threads=8 --file-rw-ratio=5 --file-total-size=500M --file-test-mode=rndrw prepare
# sysbench --test=fileio --num-threads=8 --file-rw-ratio=5 --file-total-size=500M --file-test-mode=rndrw run
清除文件
# sysbench --test=fileio --num-threads=8 --file-rw-ratio=5 --file-total-size=500M cleanup
# sysbench --test=fileio --file-num=16 --file-total-size=2G prepare
# sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrd --max-time=180 --max-requests=100000000 --num-threads=16 --init-rng=on --file-num=16 --file-extra-flags=direct --file-fsync-freq=0 --file-block-size=16384 run
清除文件
# sysbench --test=fileio --file-num=16 --file-total-size=2G cleanup4.CPU简单测试
CPU单线程简单测试
# cat simpleTestForCPU.sh
#!/bin/shdate
echo "scale=5000; 4*a(1)" | bc -l -q
date
5.nmon
6.sar
sar是Centos系统自带的命令,如果默认没有安装,可以通过执行下面命令安装
# yum -y install sysstat
统计内存使用情况,间隔1秒,统计3次
# sar -r 1 3
Linux 3.10.0-229.el7.x86_64 (myvm) 03/21/2017 _x86_64_ (8 CPU)
08:37:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
08:37:34 PM 1167292 6843816 85.43 0 2117260 7883624 98.41 5652480 743564 16
08:37:35 PM 1167236 6843872 85.43 0 2117260 7883624 98.41 5652512 743564 16
08:37:36 PM 1167180 6843928 85.43 0 2117260 7883624 98.41 5652520 743564 24
Average: 1167236 6843872 85.43 0 2117260 7883624 98.41 5652504 743564 19
统计CPU使用情况,间隔1秒,统计3次
# sar -u 1 3
Linux 3.10.0-229.el7.x86_64 (myvm) 03/21/2017 _x86_64_ (8 CPU)
08:38:10 PM CPU %user %nice %system %iowait %steal %idle
08:38:11 PM all 7.96 0.00 4.42 0.00 0.00 87.61
08:38:12 PM all 8.18 0.00 4.91 0.00 0.00 86.92
08:38:13 PM all 8.21 0.00 4.55 0.00 0.00 87.25
Average: all 8.12 0.00 4.63 0.00 0.00 87.26
也可以合并执行:
# sar -ru 1 3
统计网卡使用情况
# sar -n DEV 1 3
Linux 3.10.0-229.el7.x86_64 (myvm) 03/21/2017 _x86_64_ (8 CPU)
08:41:58 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:41:59 PM lo 9782.00 9782.00 1433.81 1433.81 0.00 0.00 0.00
08:41:59 PM ens160 4.00 0.00 0.75 0.00 0.00 0.00 0.00
08:41:59 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:42:00 PM lo 17101.00 17101.00 2507.25 2507.25 0.00 0.00 0.00
08:42:00 PM ens160 2.00 1.00 0.12 0.37 0.00 0.00 0.00
08:42:00 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:42:01 PM lo 17520.00 17520.00 2567.93 2567.93 0.00 0.00 0.00
08:42:01 PM ens160 5.00 1.00 0.81 0.37 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 14801.00 14801.00 2169.67 2169.67 0.00 0.00 0.00
Average: ens160 3.67 0.67 0.56 0.25 0.00 0.00 0.00
也可以合并监控,执行:
# sar -ru -n DEV 1 3