“Write hit” and “write miss”在存储系统里是常用的性能数据。这里讲的是Symmetrix

 

Symmetrix,这两个参数跟普通字面的意义有很大的差别,导致普遍被误解了。

 

普通字面的理解,“write hit=“写入数据命中缓存”,就意味着有足够的缓存给新写过来的数据使用。“write miss=“写入数据没有命中缓存”,就意味着缓存不够了,需要缓存做清理后才能腾出新的空间给这个写IO使用。

 

然而在Symmetrix里,不能这么简单的去理解。

 

Symmetrix里的write hit,其实有另外一个名字叫“Write Pending Write”。表示写数据需要使用的缓存空间(以磁道大小64KB为单位),之前就已经分配了,而且原来的数据就是还没有写入磁盘的数据(俗称“脏数据”)。这个时候新的写数据过来,可以直接覆盖它老数据占用的缓存空间。这个最快速的写操作,只需要把数据从前端传输到缓存即可。

 

Symmetrixcached array(缓存阵列),所有数据都必须通过缓存,所以“写到缓存是100%的”没错,但“写到缓存”不是“写命中缓存”。“命中(hit)”有它特殊的定义,“write hit”是不会100%的。

 

Write hit之外的,都是write miss了。Write miss也有另外一个名字,叫“LRU Write”。Write Miss需要前端处理器为这个新的写数据取得新的缓存空间,然后才能写入数据。

 

可以想象,Write Miss值比Write Hit多了一个缓存的分配过程。这个分配过程是非常快的。所以Write MissWrite Hit其实差异很小。

有一个极端情况,会使Write Miss非常慢。这就是写入的数据达到系统缓存的写上限(总可用缓存的75%)时,写IO转入“先把缓存内数据写入磁盘,再接受新写入的数据”,这叫做“delayed write”(也有称delayed fast write)可以称为“延迟的写“。此时写入速度降到跟“直写磁盘”差不多了,写性能会很差。

 

所以呢,用公式来表示如下:

     Write Hit = 直接写入到这个数据空间(目标磁道)已经占用且已有数据的缓存里。

     Write Miss =“分配缓存空间”+“写入数据”。

     Delayed Write = “把占用的缓存空间已有数据写入磁盘,腾出缓存空间后分配给新的写数据”+ “写入数据”。

 

因为“分配缓存空间”操作的速度非常快,所以平时我并不非常关注“wirte hit”,“write miss”。一般只关心是否有delayed write。这个也只需查看System Write Pending75% system cache)有没有达到,或者单个逻辑卷的write pending5% system write pending)有没有被达到即可。