I have been asked this question a few times now, so its worth a blog entry.
Clients love being able to easily view XIV performance statistics.
There is a simple panel that lets you display IOPS, throughput and response times for each host or volume or for the entire machine.
When viewing XIV performance statistics using the built in GUI panels, write I/Os are broken into two types: write hits and write misses.
The question that comes up is... what is the difference? And should I be worried about misses
The use of the term miss
can have negative connotations. To explain why:
- A read hit is well understood to be a read that got satisfied from cache (so there was no need to wait for the data to be read from disk).
- A read miss is well understood to be a request for data that was not found in cache. This means we have to wait for it to be fetched from disk.
Clearly the latency of a read miss is going to be higher than a read hit.
So what about a write miss? Does it mean that the write I/O 'missed' the cache?
The answer is.... no!
To explain the difference:
A write hit
is the situation where a host write generates less back end disk operations. This is because:
- A host writes over data that is in cache but which has not yet been destaged to disk (meaning we now effectively destage less data to disk).
- A host writes data into a block address that is sequential to data already in cache (within the same 1MB of logical block addresses). This means we can destage all the data together (which is more efficient).
So write hits cut down on the amount of backend disk I/O that we need to do.
A write miss on the other hand just means that we write to cache, but the relevant 1MB of logical block addresses do not contain any other data. There is nothing wrong with a write miss.So to be clear - all writes are to cache (both write hits and write misses) and the latencies of both write types will be the same.
To prove this, if you have an XIV, check out the latency of each type.
In the example below, the latency of both write hits and write misses is averaging 1ms.
So in general there is no need to view them as separate performance metrics.