zoukankan      html  css  js  c++  java
  • 磁盘IO初探

    背景

    数据库系统是一个IO密集型系统,在排查问题时经常遇到IO相关的问题,数据库insert/update慢是否由于磁盘IO慢导致的呢?正常的磁盘IO应该在什么数量级呢?

    测试

    • 测试思路:根据从领导那里学来的方法,在系统空闲时段分别在三种不同的操作系统(磁盘设备)上写入大文件,查看写入速度

    测试一 虚拟磁盘

    • 查看OS版本
    [root@localhost ~]# 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
    • 查看磁盘设备信息
    [root@localhost ~]# 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大小文件测试
    [root@localhost 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
    
    [root@localhost 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
    
    [root@localhost 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
    
    [root@localhost 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版本
    [wangzhen@localhost ~]$ 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
     
    • 查看磁盘设备信息
    [wangzhen@localhost ~]$ 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大小文件测试
    [wangzhen@localhost ~]$ 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
    
    [wangzhen@localhost ~]$ 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
    
    [wangzhen@localhost ~]$ 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
    
    
    [wangzhen@localhost ~]$ 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版本
    [root@localhost ~]# 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
    • 查看磁盘设备信息
    [root@localhost ~]# 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大小文件测试
    [root@localhost ~]# 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
    
    [root@localhost ~]# 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
    
    [root@localhost ~]# 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
    
    [root@localhost ~]# 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/秒

    测试过程和方法可能不严谨,仅供参考和学习交流,欢迎批评指正!

  • 相关阅读:
    Principle of Computing (Python)学习笔记(5) BFS Searching + Zombie Apocalypse
    《Java从入门到精通》src9-25
    《Java从入门到精通》src0-8
    windows查看某个端口被谁占用
    css selector: xpath:
    awk 正则表达式
    Centos系统各种日志存详解
    mysql日志文件
    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY'
    递归函数时间复杂度分析
  • 原文地址:https://www.cnblogs.com/wangzhen3798/p/7244428.html
Copyright © 2011-2022 走看看