磁盘IO初探
Posted wangzhen3798
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘IO初探相关的知识,希望对你有一定的参考价值。
背景
数据库系统是一个IO密集型系统,在排查问题时经常遇到IO相关的问题,数据库insert/update慢是否由于磁盘IO慢导致的呢?正常的磁盘IO应该在什么数量级呢?
测试
- 测试思路:根据从领导那里学来的方法,在系统空闲时段分别在三种不同的操作系统(磁盘设备)上写入大文件,查看写入速度
测试一 虚拟磁盘
- 查看OS版本
[[email protected] ~]# uname -a Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
- 查看磁盘设备信息
[[email protected] ~]# cat /proc/scsi/scsi Attached devices: Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: VMware Model: Virtual disk Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 05
- 写入1G大小文件测试
[[email protected] home]# time dd if=/dev/zero of=/home/1kb.1GBFILE bs=1k count=1048576 记录了1048576+0 的读入 记录了1048576+0 的写出 1073741824字节(1.1 GB)已复制,74.0427 秒,14.5 MB/秒 real 1m14.121s user 0m0.142s sys 0m2.434s [[email protected] home]# time dd if=/dev/zero of=/home/4kb.1GBFILE bs=4k count=262144 记录了262144+0 的读入 记录了262144+0 的写出 1073741824字节(1.1 GB)已复制,82.6433 秒,13.0 MB/秒 real 1m22.646s user 0m0.041s [[email protected] home]# time dd if=/dev/zero of=/home/8kb.1GBFILE bs=8k count=131072 记录了131072+0 的读入 记录了131072+0 的写出 1073741824字节(1.1 GB)已复制,65.9848 秒,16.3 MB/秒 real 1m5.987s user 0m0.041s sys 0m1.272s [[email protected] home]# time dd if=/dev/zero of=/home/16kb.1GBFILE bs=16k count=65536 记录了65536+0 的读入 记录了65536+0 的写出 1073741824字节(1.1 GB)已复制,65.156 秒,16.5 MB/秒 real 1m5.159s user 0m0.017s sys 0m1.131s
测试二 传统机械硬盘
- 查看OS版本
[[email protected] ~]$ uname -a Linux localhost.localdomain 4.11.3-202.fc25.x86_64 #1 SMP Mon Jun 5 16:38:21 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- 查看磁盘设备信息
[[email protected] ~]$ cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: WDC WD10JPVX-08J Rev: 1A05 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: SanDisk SSD U110 Rev: 001 Type: Direct-Access ANSI SCSI revision: 05
- 写入1G大小文件测试
[[email protected] ~]$ time dd if=/dev/zero of=/home/wangzhen/1kb.1GBFILE bs=1k count=1048576 记录了1048576+0 的读入 记录了1048576+0 的写出 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 9.6718 s, 111 MB/s real 0m9.674s user 0m0.100s sys 0m1.997s [[email protected] ~]$ time dd if=/dev/zero of=/home/wangzhen/4kb.1GBFILE bs=4k count=262144 记录了262144+0 的读入 记录了262144+0 的写出 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 10.3533 s, 104 MB/s real 0m10.355s user 0m0.040s sys 0m0.858s [[email protected] ~]$ time dd if=/dev/zero of=/home/wangzhen/8kb.1GBFILE bs=8k count=131072 记录了131072+0 的读入 记录了131072+0 的写出 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 9.71665 s, 111 MB/s real 0m9.719s user 0m0.019s sys 0m0.796s [[email protected] ~]$ time dd if=/dev/zero of=/home/wangzhen/16kb.1GBFILE bs=16k count=65536 记录了65536+0 的读入 记录了65536+0 的写出 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 9.90074 s, 108 MB/s real 0m9.903s user 0m0.008s sys 0m0.793s
测试三 磁盘阵列
- 查看OS版本
[[email protected] ~]# uname -a Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
- 查看磁盘设备信息
[[email protected] ~]# cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 02 Id: 00 Lun: 00 Vendor: LSI Model: RAID 510i Rev: 2.13 Type: Direct-Access ANSI SCSI revision: 05
- 写入1G大小文件测试
[[email protected] ~]# time dd if=/dev/zero of=/home/1kb.1GBFILE bs=1k count=1048576 记录了1048576+0 的读入 记录了1048576+0 的写出 1073741824字节(1.1 GB)已复制,2.16015 秒,497 MB/秒 real 0m2.162s user 0m0.097s sys 0m2.061s [[email protected] ~]# time dd if=/dev/zero of=/home/4kb.1GBFILE bs=4k count=262144 记录了262144+0 的读入 记录了262144+0 的写出 1073741824字节(1.1 GB)已复制,0.937081 秒,1.1 GB/秒 real 0m0.939s user 0m0.025s sys 0m0.912s [[email protected] ~]# time dd if=/dev/zero of=/home/8kb.1GBFILE bs=8k count=131072 记录了131072+0 的读入 记录了131072+0 的写出 1073741824字节(1.1 GB)已复制,0.872579 秒,1.2 GB/秒 real 0m0.874s user 0m0.014s sys 0m0.858s [[email protected] ~]# time dd if=/dev/zero of=/home/16kb.1GBFILE bs=16k count=65536 记录了65536+0 的读入 记录了65536+0 的写出 1073741824字节(1.1 GB)已复制,0.921259 秒,1.2 GB/秒 real 0m0.923s user 0m0.007s sys 0m0.915s
结论
不同的磁盘类型和架构方式,磁盘的写入速度相差近10倍,以下为各个磁盘类型写入速度数量级
- 测试一 虚拟磁盘的写入速度稳定在16M/秒
- 测试二 机械硬盘的写入速度稳定在110M/秒
- 测试三 磁盘阵列的写入速度稳定在1.2G/秒
测试过程和方法可能不严谨,仅供参考和学习交流,欢迎批评指正!
以上是关于磁盘IO初探的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段