ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## [重读分区表][6] ## 磁盘类型判定 SSD HDD ~~~ SSD是非转动磁盘, Linux可以通过读 sysfs: cat /sys/block/sda/queue/rotational 返回 0, 就是 SSD。 $ lsblk -d -o name,rota NAME ROTA sda 0 ~~~ # 性能测试 ## dd 简单测试磁盘 ~~~ dd if=/dev/zero of=testf bs=1M count=512 oflag=direct # 清除cache echo 3 > /proc/sys/vm/drop_caches ~~~ ## hdparm ### 安装 ``` # centos yum install -y hdparm ``` ### 常用参数 ~~~ hdparm -t /dev/sdb 测试实际磁盘性能 hdparm -T /dev/sdb 内存缓存的读写速度 hdparm -I /dev/sdb 查看信息 ~~~ ## [fio][2] [参考博客][4] [云盘性能测试][7] ### 安装 ~~~ yum install -y fio ~~~ ### 常用参数 ## bonnie++ ~~~ yum install bonnie++ # 进行4G文件测试 bonnie++ -u root ~~~ ``` fio -filename=/nfsdata/test_randread -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync \ -bs=512k -size=512m -numjobs=8 -runtime=60 -group_reporting -name=mytest 说明: 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 关于显示结果的,汇总每个进程的信息。 ``` ## [iozone][3] 针对文件系统的性能测试的。和常用的IO性能测试工具sysbench, fio, iometer不同, 它主要是通过`模拟用户访问文件模式`的不同,典型的如下面的几种: ~~~ (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) ~~~ ~~~ /opt/iozone/bin/iozone -l 4 -u 4 -r 512k -s 512m ~~~ 来达到隔离访问文件系统的meta信息和data信息的不同的开销, 从而反应文件系统的性能。 * [文件系统性能测试:使用iozone](https://www.cnblogs.com/yunnotes/archive/2013/04/19/3032487.html) ### 安装 ~~~ apt-get install iozone3 yum install iozone -y ~~~ ~~~ /opt/iozone/bin/iozone -i 0 -i 1 -s 512m -r 512k -I -p -t 16 -a auto mode产生文件大小16K-512M,记录大小4K-16M的输出结果; -e 计算时间时算上fflush,fsync的时间; -f 指定临时测试文件; -s 指定测试文件大小; -r 指定测试记录大小; -g –n 指定auto模式下,最大/小测试文件大小; -q –y 指定auto模式下,最大/小测试记录大小; -i 指定特定的测试操作: -I 指定direct io操作; -p 清除cpu cache影响; -O 输出IOPS值; -R 生成excel报告文件; -W 读写之前锁定文件; ~~~ > /opt/iozone/bin/iozone -a 自动模式 # 状态监控 ## [iostat][1] ### 安装 ~~~ yum install -y sysstat ~~~ ### 用法 ~~~ -x 参数,输出更多详细信息 ~~~ ~~~ rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge); wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。 rsec/s:每秒读取的扇区数; wsec/:每秒写入的扇区数。 r/s:The number of read requests that were issued to the device per second; w/s:The number of write requests that were issued to the device per second; await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。 ~~~ ### 实例 ~~~ iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 ~~~ ## [iotop][5] ## 相关博客 * [linux系统读写缓存](https://www.cnblogs.com/zengkefu/p/5759335.html) [1]:http://www.cnblogs.com/muahao/p/6438409.html [2]:http://freshmeat.sourceforge.net/projects/fio/ [3]:http://www.iozone.org/ [4]:http://elf8848.iteye.com/blog/2168876 [5]:http://guichaz.free.fr/iotop/ [6]:http://blog.chinaunix.net/uid-25906175-id-3251710.html [7]:https://www.cnblogs.com/yuhaohao/p/9770701.html