TDB|后台开发中心Linux性能优化磁盘IOTDB|后台开发中心磁盘IO系统性能磁盘结构优化措施性能指标监测工具TDB|后台开发中心磁盘结构硬件指标转速(5400-15000)单碟容量(80G-640G)平均寻道时间(3-6ms)缓存(8M-64M)内部数据传输率(60M-90M)温彻斯特式硬盘TDB|后台开发中心磁盘结构硬盘的逻辑结构盘片(Platter)盘面(Side)磁道(Track)柱面(Cylinder)数据的读/写按柱面进行扇区(Sector)(512Byte)扇区头标和数据区交叉因子&磁头扭斜硬盘容量:盘面数×柱面数×扇区数×512字节TDB|后台开发中心磁盘结构硬盘的接口类型IDE(制造简单、成本低、兼容性好,20M~130MBPS)SCSI(速度快、可靠性高、热拔插、高成本,40M~320MBPS)SATA(串口硬盘、结构简单、自动纠错,150M~600MBPS)SAS(串口硬盘、兼容SATA,300M~1300M)光钎通信(热插拔性、高速带宽、远程连接、连接设备数量大)Linux下的标识IDE:hdx~;SCSI:sdx~“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,1到4表示主分区或扩展分区,从5开始就是逻辑分区TDB|后台开发中心Linux磁盘系统我们可以通过“fdisk-l”命令来查看系统的磁盘情况:TDB|后台开发中心磁盘IO系统性能磁盘结构优化措施性能指标监测工具TDB|后台开发中心磁盘I/O性能指标每秒I/O数(IOPS)——传输小块不连续数据时吞吐量(Throughput)——传输大块不连续数据的数据平均I/O数据尺寸——32K磁盘活动时间百分比(Utilization)——70%服务时间(ServiceTime)I/O等待队列长度(QueueLength)——磁盘数*2等待时间(WaitTime)——持续超过10msTDB|后台开发中心磁盘I/O性能指标:IOPSIOPS(IOperSecond)寻址时间(SeekTime)旋转延时(RotationalDelay)传送时间(TransferTime)IOTime=SeekTime+60sec/RotationalSpeed/2+IOChunkSize/TransferRateIOPS=1/IOTime常用磁盘的IOPS,转速15KRPM,平均寻道时间为5ms,最大传输速率为40MB/s,不同IO大小下的IOPS:4K:(1/7.1ms=140IOPS)5ms+(60sec/15000RPM/2)+4K/40MB=5+2+0.1=7.116K:(1/7.4ms=135IOPS)5ms+(60sec/15000RPM/2)+16K/40MB=5+2+0.4=7.464K:(1/8.6ms=116IOPS)5ms+(60sec/15000RPM/2)+64K/40MB=5+2+1.6=8.6TDB|后台开发中心磁盘I/O性能指标传输速度(TransferRate):IOPS*IOChunkSize4K:140*4K=560K/40M=1.36%16K:135*16K=2160K/40M=5.27%32K:116*32K=3712K/40M=9.06%IO响应时间(IOResponseTime)服务时间+等待时间队列大小最大IOPS的70%TDB|后台开发中心磁盘IO系统性能磁盘结构优化措施性能指标监测工具TDB|后台开发中心IO性能监控:iostatrrqm/s、wrqm/s:每秒进行merge的读、写操作数目。r/s、w/s:每秒读、写操作数。(IOPS)rsec/s、wsec/s:每秒向设备读取、写入的扇区数量。rkB/s、wkB/s:每秒读、写KB字节数。(吞吐率)avgrq-szI/O请求的平均扇区数。(平均单次IO大小)avgqu-szI/O请求的平均队列长度。awaitI/O请求的平均等待时间,单位为毫秒。(平均IO响应时间)svctmI/O请求的平均服务时间,单位为毫秒。%util处理I/O请求所占用的时间的百分比,即设备利用率。TDB|后台开发中心IO性能监控:iostatTDB|后台开发中心IO性能监控vmstattopsar...TDB|后台开发中心磁盘IO系统性能磁盘结构优化措施性能指标监测工具TDB|后台开发中心提升磁盘I/O性能硬件保障IDE、SCSI=SATA、SAS使用多个控制器高速缓存(Cache)缓存数据预读回写使用RAIDRaid0:无差错控制的带区组Raid1:镜象结构Raid5:分布式奇偶校验的独立磁盘结构Raid10:高可靠性与高效磁盘结构减少应用存取磁盘的次数TDB|后台开发中心磁盘I/O性能提升使用RAIDLevelRedundancyDisksrequiredFasterreadsFasterwritesRAID0NoNYesYesRAID1YesN*2YesNoRAID5YesN+1YesNoRAID10YesN*2YesYes对性能的影响IO响应时间(IOResponseTime):保持不变,控制在10msIOPS:Read提升N倍,Write(Raid0:N,Raid1:N/2,Raid5:N/4,Raid10:N/2传输速度(TransferRate)random_throughtput=random_IOPS*IO_chunk_sizeTDB|后台开发中心磁盘I/O性能提升—应用层优化充分利用磁盘的特性块状设备:写一个字节和写一个block是一样快的线性设备:线性写远比随机写快管家数据上报120字节/record300亿每天,峰值50w/s如何保存到数据库TDB|后台开发中心磁盘I/O性能提升—应用层优化减少磁盘IO的次数数据统计:公共字段每条的数值基本一样,如何提高储存效率?统计的对象往往是多个字段中的一两个字段,如何提高读取效率InfoBright:列式存储、知识网络、高效压缩应用层增加Cache,减少读的次数延迟写、批量写,减少写的次数利用产品特性,提高有效读写率TDB|后台开发中心磁盘IO系统性能磁盘结构优化措施性能指标监测工具总结TDB|后台开发中心AnyQuestion?TDB|后台开发中心谢谢!