RioVista – Summary and notes

November 16, 2020 | minutes read

Introduction

Lesson outline for RioVista

Key Words: ACID, transactions, synchronous I/O

RioVista picks up where LRVM left off and aims for a performance conscience transaction. In other words, how can RioVista reduce the overhead of synchronous I/O, attracting system designers to use transactions

System Crash

Two types of failures: power failure and software failure

Key Words: power crash, software crash, UPS power supply

Super interesting concept that makes total sense (I’m guessing this is actually implemented in reality). Take a portion of the memory and battery back it up so that it survives crashes

LRVM Revisited

Upshot: 3 copies by LRVM

Key Words: undo record, window of vulnerability

In short, LRVM can be broken down into begin transaction, end transaction. In the former, portion of memory segment is copied into a backup. At the end of the transaction, data persisted to disk (blocking operation, but can be bypassed with NO_FLUSH option). Basically, increasing vulnerability of system to power failures in favor of performance. So, how will a battery backed memory region help?

Rio File Cache

Creating a battery backed file cache to handle power failures

Key Words: file cache, persistent file cache, mmap, fsync, battery

In a nutshell, we’ll use a battery backed file cache so that writes to disk can be arbitrarily delayed

Vista RVM on Top of RIO

Vista – RMV on top of Rio

Key Words: undo log, file cache, end transaction, memory resisdent

Vista is a library that offers same semantics of LRVM. During commit, throw away the undo log; during abort, restore old image back to virtual memory. The application memory is now backed by file cache, which is backed by a power. So no more writes to disk

Crash Recovery

Key Words: idempotency

Brilliant to make the crash recovery mechanism the exact same scenario as an abort transaction: less code and less edge cases. And if the crash recovery fails: no problem. The instruction itself is idempontent

Vista Simplicity

Key Words: checkpoint

RioVista simplifies the code, reducing 10K of code down to 700. Vista has no redo logs, no truncation, all thanks to a single assumption: battery back DRAM for portion of memory

Conclusion

Key Words: assumption

By assuming there’s only software crashes (not power), we can come to an entirely different design

I’m Matt Chung. I’m a software engineer, seasoned technology leader, and father currently based in Seattle and London. I love to share what I know. I write about topic developing scalable & fail-safe software running in the AWS cloud, digital organization as a mechanism for unlocking your creativity, and maximizing our full potentials with personal development habits.

View all articles