11/23/2017
Posted by 

An explanation of IOPS and latency Recovery Monkeylt I understand this extremely long post is redundant for seasoned storage performance pros however, these subjects come up so frequently, that I felt compelled to write something. Plus, even the seasoned pros dont seem to get it sometimes IOPS Possibly the most common measure of storage system performance. IOPS means InputOutput operations Per Second. Seems straightforward. A measure of work vs time not the same as MBs, which is actually easier to understand simply, Mega. Bytes per Second. How many of you have seen storage vendors extolling the virtues of their storage by using large IOPS numbers to illustrate a performance advantage How many of you decide on storage purchases and base your decisions on those numbers However how many times has a vendor actually specified what they mean when they utter IOPSFor the impatient, Ill say this IOPS numbers by themselves are meaningless and should be treated as such. Without additional metrics such as latency, read vs write and IO size to name a few, an IOPS number is useless. And now, lets elaborate and, as a refresher regarding the perils of ignoring such things when it comes to sizing, you can always go back here. One hundred billion IOPSIve competed with various vendors that promise customers high IOPS numbers. On a small system with under 1. K RPM spinning disks, a certain three letter vendor was claiming half a million IOPS. Another, a million. Of course, my customer was impressed, since that was far, far higher than the number I was providing. But whats reality Here, Ill do one right now an SSD can do a million IOPS. Maybe even two million. Go ahead, prove otherwise. Its impossible, since there is no standard way to measure IOPS, and the official definition of IOPS operations per second does not specify certain extremely important parameters. By doing any sort of IO test on the box, you are automatically imposing your benchmarks definition of IOPS for that specific test. Maybe I meant 1 million 5. And maybe your test was random 8. K overwrites. Whats an operation What kind of operations are thereBook now at Fogo de Chao Brazilian Steakhouse King of Prussia in King of Prussia, explore menu, see photos and read 869 reviews The food is very good, but the. Cubs pitcher John Lackey is 38 years old and, going into last nights game against the Reds, had never stolen a base. That changed in the bottom of the fourth. Two Equifax executivesChief Information Officer David Webb and Chief Security Officer Susan Mauldinare retiring in the wake of a security breach that. Benefits Enrollment for 2018 is Closed. Click an icon above to find more information for your benefits program. New Electronic Freeze Form Norman Programs. ProductImage/product/019400.jpg' alt='Monkey King Private Server' title='Monkey King Private Server' />It can get complicated. An IO operation is simply some kind of work the disk subsystem has to do at the request of a host andor some internal process. Typically a read or a write, with sub categories for instance read, re read, write, re write, random, sequential and a size. Depending on the operation, its size could range anywhere from bytes to kilobytes to several megabytes. Now consider the following most assuredly non comprehensive list of operation types A random 4. KB read. A random 4. FOOLS ERRANDS. A Fools Errand is the practical joke of sending a person to fetch some nonexistent but plausible sounding item. The joke is usually played at work. Monkey King Private Server' title='Monkey King Private Server' />Monkey King Private ServerKB read followed by more 4. KB reads of blocks in logical adjacency to the first. A 5. 12 byte metadata lookup and subsequent update. A 2. 56. KB read followed by more 2. KB reads of blocks in logical sequence to the first. A 6. 4MB read. A series of random 8. KB writes followed by 2. KB sequential reads of the same data that was just written. Visible Body Pc Crack. Random 8. KB overwrites. Random 3. 2KB reads and writes. EWm_400x400.jpeg' alt='Monkey King Private Server' title='Monkey King Private Server' />Combinations of the above in a single thread. Combinations of the above in multiple threadsthis could go on. As you can see, theres a large variety of IO types, and true multi host IO is almost never of a single type. Virtualization further mixes up the IO patterns, too. Now here comes the biggest point if you can remember one thing from this post, this should be it No storage system can do the same maximum number of IOPS irrespective of IO type, latency and size. Lets re iterate It is impossible for a storage system to sustain the same peak IOPS number when presented with different IO types and latency requirements. Another way to see the limitationA gross oversimplification that might help prove the point that the type and size of operation you do matters when it comes to IOPS. Meaning that a system that can do a million 5. IOPS cant necessarily do a million 2. K IOPS. Imagine a bucket, or a shotshell, or whatever container you wish. Imagine in this container you have either A few large balls orMany tiny balls. The bucket ultimately contains about the same volume of stuff either way, and it is the major limiting factor. Clearly, you cant completely fill that same container with the same number of large balls as you can with small balls. They kinda look like shotshells, dont they Now imagine the little spheres being forcibly evacuated rapildy out of one end which takes us toLatency matters. So, weve established that not all IOPS are the same but what is of far more significance is latency as it relates to the IOPS. If you want to read no further never accept an IOPS number that doesnt come with latency figures, in addition to the IO sizes and readwrite percentages. Simply speaking, latency is a measure of how long it takes for a single IO request to happen from the applications viewpoint. In general, when it comes to data storage, high latency is just about the least desirable trait, right up there with poor reliability. Databases especially are very sensitive with respect to latency DBs make several kinds of requests that need to be acknowledged quickly ideally in under 1. In particular, the redo log writes need to be acknowledged almost instantaneously for a heavy write DB under 1ms is preferable. High sustained latency in a mission critical app can have a nasty compounding effect if a DB cant write to its redo log fast enough for a single write, everything stalls until that write can complete, then moves on. However, if it constantly cant write to its redo log fast enough, the user experience will be unacceptable as requests get piled up the DB may be a back end to a very busy web front end for doing Internet sales, for example. A delay in the DB will make the web front end also delay, and the company could well lose thousands of customers and millions of dollars while the delay is happening. Some companies could also face penalties if they cannot meet certain SLAs. On the other hand, applications doing sequential, throughput driven IO like backup or archival are nowhere near as sensitive to latency and typically dont need high IOPS anyway, but rather need high MBs. It follows that not all IO sizes and IO operations are subject to the same latency requirements. Heres an example from an Oracle DB a system doing about 1. IOPS at 2. 5ms latency. Doing more IOPS would be nice but the DB needs the latency to go a lot lower in order to see significantly improved performance notice the increased IO waits and latency, and that the top event causing the system to wait is IO Now compare to this system different format this data but youll get the point Notice that, in this case, the system is waiting primarily for CPU, not storage. A significant amount of IO wait is a good way to determine if storage is an issue there can be other latencies outside the storage of course CPU and network are a couple of usual suspects. Even with good latencies, if you see a lot of IO waits it means that the application would like faster speeds from the storage system. But this post is not meant to be a DB sizing class. Heres the important bit that I think is confusing a lot of people and is allowing vendors to get away with unrealistic performance numbers It is possible but not desirable to have high IOPS and high latency simultaneously.