The Ursa Project Dota Hero

PARIX: Speculative Partial Writes in Erasure-Coded Systems


Overview

Erasure coding (EC) has been widely used in cloud storage systems because it effectively reduces storage redundancy while providing the same level of durability. However, EC introduces significant overhead to small write operations which perform partial write to an entire EC group. This has been a major barrier for EC to be widely adopted in small-write-intensive systems such as virtual disk service. Parity logging (PL) appends parity changes to a journal to accelerate partial writes. However, since previous PL schemes have to perform a time-consuming write-after-read for each partial write to compute the parity delta, their write performance is still much lower than that of replication-based storage.

We design PARIX, a speculative partial write scheme for fast parity logging. We transform the original formula of parity calculation, so as to use the data deltas (between the current/original data values), instead of the parity deltas, to calculate the parities during journal replay. For each partial write, this allows PARIX to speculatively log only the current value of the data. The original value is needed only once in a journal when performing the first write to the data. For a series of n partial writes to the same data, PARIX performs pure write (instead of write-after-read) for the last n??1 ones while only introducing a small penalty of an extra network RTT (round-trip time) to the first one. PARIX remarkably outperforms state-of-the-art PL schemes in partial writes by up to orders of magnitude.

Funding

Contact us

We welcome feedback, suggestions, patches, and so forth. Send them to ...


Last modified: 8 Feb., 2017 /