一、IO是什么

IO统称为输入输出(input/output),又分为IO接口和IO设备,比如像USB接口就是IO接口,硬盘的接口;IO设备像硬盘、键盘、蓝牙耳机等;

二、为什么会有IO问题

  ①:CPU访问内存和访问硬盘的速度之差

    是因为cpu的运行速度与IO运行速度数量级的速度之差导致、cpu访问内存比cpu访问硬盘快1000倍,cpu的运行速度是ns级别,而SSD的速度是us级别、HDD是ms毫秒级别,NS = 1000*1000 MS;速度之差如下图:

  

applium ios配置_applium ios配置

 为什么不用局部性原理? 

   可能你会问,加一个缓存不是就可以了吗?像cpu和memory之间的速度差,加一个告诉缓存L1、L2、L3;cpu访问内存和硬盘速度差,把内存数据放到Redis里面不就行了吗,但现在mysql数据库中,一个表上千万的数据量已经很正常的,内存不可能缓存那么多数据的;

 ②:硬盘的访问更多是随机读写

顺序读写:文件的指针从头到尾的读写,避免的磁盘的多次寻址和寻道时间

 随机读写:文件的指针可以任意的移动,导致磁盘进行大量的寻址和寻道操作;

 磁盘顺序读写,拿HDD的速度在一秒钟读写20万,但跟平时的开发经验不符合,为什么?

 原因在于磁盘大多数都是在随机读写,而随机读写的速度是顺序读写的几十分之一左右;

 像我电脑SSD随机4k的读取速度是39M/s

 磁盘随机读写,7200转的HDD大概在100次,而SDD大概在10000左右,写最快也就20000次,

 为什么请双击链接()

applium ios配置_响应时间_02


 硬盘的几个核心指标,吞吐率、和响应时间、IOPS;

  吞吐率:

   常规HDD吞吐率是 200M/S, SDD吞吐率是stta3.0的接口,带宽6G/b(小b),大概是700M/S,速度差3倍左右;

响应时间:

   常规HDD响应时间是 0.6ms, SDD相应时间是0.066ms,相差10倍左右;

IOPS:

   表示每秒输入输出操作的次数;io的核心指标,大家更关注的指标;

IOPS = 平均延迟+平均寻道时间

三、在服务器中如何定位io问题

 ①:top命令,wa(如截图)就是表示IOwait的指标,也就是cpu等待IO执行完成花费的时间占cpu的百分比

 

applium ios配置_响应时间_03

 

iostat命令,查看每个硬盘的实际读写情况,关注每个硬盘的TPS、read/write 

  没有此命令通过 yum-y install iostat安装

   

applium ios配置_ios_04

 

   ③:通过iotop 找出占用io高的进程,搞定问题

   

applium ios配置_ios_05

 

 

                                                         谢谢阅读、一起进步