Read/write symmetry refers to a solid-state system’s ability to execute either a read or a write call or a function with equal levels of priority, importance and delivery—it takes the same amount of time to read as it does to write. Achieving read/write symmetry should be a priority for your business for two reasons: symmetry affects performance and symmetry implies quality.
Writes are important, more important than many realize. A common practice is to look at an application and its IO profile. This is a critical step, but its results are often misinterpreted. The goal is to understand how that application works, how much time does it write, how much time does it read and so on for the entire lifecycle of the data. Some applications spend more time doing one activity versus the other and we often make assumptions regarding the importance of write IOPS if our write activity is less than 50%.
Let’s say I’ve done my IO evaluation and I’ve discovered my application writes 30% of the time and reads 70%. I may think write symmetry with respect to performance does not matter, but that is not actually the case. I have to consider the criticality of that particular write operation.
As a hypothetical IO analysis let’s consider a banking application that produces account activity statements at the end of each month for all customers, which is required by bank regulations. The application is going to go through everybody’s accounts, total them up, summarize them and store that summarized data in the form of the month-end statement. For most of the month the database of record is writing far less of the time than it is reading.
Let’s dig in to the data collection used by the application. If I have 50 million accounts with an average of 25-50 transactions per month, I get 1,250 to 2,500 million transactions created each month. Now consider that if you keep 12 months worth of transactions per year in your current customer data collection, the average of at least the last fiscal years’ transactions could total between 30 to 60 trillion records. The program to calculate month-end statements will be doing a lot of reading. It will focus on the current month’s data, which is 1/12th of 30-60 trillion records. But, more importantly, it will be doing extremely critical writes in an extremely short period of time.
Read/write symmetry is important to look at beyond just making sure applications can perform write operations quickly. Flash vendors use a block translation layer (BTL) to manipulate and improve the write performance of flash. This BTL does much more than increase the speed at which flash writes. But if a system has read numbers that far exceed the write numbers and one sees a dramatic degradation in write performance with that system, then you can safely infer that the software layer is carrying the write asymmetry back out to the operating system of the host application and the application itself. This ratio of write to read performance should be looked at closely when evaluating systems regardless of the IO Profile of an individual application.
Write performance isn’t only important to applications, it’s essential to the entire business. Applications cannot read anything that hasn’t first been written and they can only go as fast as their slowest write, which means the entire business may be at the mercy of its solid-state system as it waits on writes.