存储概念—正确描述IO类型

不同应用通常具有不同的I/O类型,了解应用的I/O类型是为其设计解决方案、排错性能问题的首要工作。那I/O类型通常包括哪些需要考虑的因素?我们今天就来谈一谈I/O类型的几个重要方面。


读 vs. 写

     应用程序的读写请求必须量化,了解他们之间的比列,因为读写对存储系统的资源消耗是不通的。了解读写比率直接关系到如何应用缓存、RAID类型等子系统的最佳实践。写通常需要比读更多的资源,SSD的写操作相对读更是慢得多。

顺序 vs. 随机

     传统存储系统通常都是机械硬盘,因此整个系统设计为尽可能顺序化I/O,减少由于磁盘寻道所带来的延迟。所以,顺序I/O相对随机I/O的性能会好很多。随机小I/O消耗比顺序大I/O更多的处理资源。随机小I/O更在意系统处理I/O的数量,即IOPS;而顺序大I/O则更在意带宽,即MB/s。因此,如果系统承载了多种不同的应用,必须了解它们各自的需求,是对IOPS有要求,还是对带宽有要求。这往往需要在两种之间进行折衷考虑。闪盘是一个例外,它没有机械寻道操作,因此对随机小I/O的处理是非常迅速的,由此是读操作。

大I/O vs. 小I/O

     我们通常把<=16KB的I/O认为是小I/O,而>=32KB的I/O认为是大I/O。就单个I/O来讲,大I/O从微观的角度相比小I/O会需要更多处理资源,不过对于智能存储系统来说,会尽可能把I/O整理为顺序的,以单个操作执行,如此依赖,将多个小I/O整理成单个大I/O处理后,反而会更快。I/O的大小依然取决于应用程序本身,了解I/O的大小,影响到后期对缓存、RAID类型、LUN的一些属性的调优。

位置引用

     数据的位置分布影响到后期对二级缓存或存储分层技术的应用,因为这些技术都会根据I/O的位置分布来判断是否将I/O放置到缓存或快速的层级。位置引用是指那些被频繁的存储位置,我们通常认为最新创建的数据以及最近被访问过的数据,它们周围的数据也同时被访问的可能性会比较大。因此,了解应用程序的I/O位置特性,有助于应用正确的性能优化技术。

稳定 vs. 爆发

     I/O数量在一天中的不同时段会有不同的表现。例如,早高峰时段的I/O数量相比下班后的I/O会多出许多。如果能准确预测和估计应用的I/O在不同时间段的稳定性和爆发性,可以正确分配资源,提高资源利用率。在前期的设计阶段,就应该考虑系统是否能够处理I/O高峰期。

 

多线程 vs. 单线程

 

     多线程是实现并发操作的一种方式,同时也意味着对存储系统的资源消耗更多。这种高IOPS的请求方式,在有些情况下会造成磁盘繁忙,进而导致I/O排队,增加了响应时间。因此,适度的调整线程数量,不仅可以实现并发,而且能在不拖累整个存储系统的情况下,达到最优的响应时间。

如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!

发表评论