There's an interesting paper at

https://www.usenix.org/system/files/conference/atc15/atc15-paper-lee-wongun.pdf

I don't know enough to evaluate it, but if I'm understanding correctly:
 -- They have modified sqlite so as to work directly with the EXT4
filesystem to prevent redundant journaling (i.e., otherwise, both sqlite
and ext4 will journal all data changes)
 -- They claim sqlite writes account for a significant portion of mobile
device data writes.
 -- They claim huge reductions in data writes in some configurations --
e.g. down to as low as one sixth of unmodified systems.
 -- They call their new sqlite mode "WALDIO" for WAL Direct-I/O.
 -- They make several changes to obtain the claimed efficiency, such as
preallocation and initialization of db sectors, modifiying and aligning
headers, commands to EXT4, etc.
 -- One mode does require that power not be removed abruptly from the eMMC
controller (but they still claim durability even in the face of a kernel
panic)
 -- The flash system should not ignore the DISCARD command nor return the
old data if a read is later attempted.
 -- Their prototype is on a Samsung Galaxy S5
 -- I don't notice where their code is available.  I  guess it's
proprietary (?)


*Abstract *
This work is dedicated to resolve the Journaling of Journal Anomaly in
Android IO stack. We orchestrate SQLite and EXT4 filesystem so that
SQLite?s file-backed journaling activity can dispense with the expensive
filesystem intervention, the journaling, without compromising the file
integrity under unexpected filesystem failure. In storing the logs, we
exploit the direct IO to suppress the filesystem interference.


This work consists of three key ingredients:
   (i) Preallocation with Explicit Journaling,
   (ii) Header Embedding, and
   (iii) Group Synchronization.

Preallocation with Explicit Journaling eliminates the filesystem journaling
properly protecting the file metadata against the unexpected system crash.
We redesign the SQLite B-tree structure with Header Embedding to make it
direct IO compatible and block IO friendly. With Group Synch, we minimize
the synchronization overhead of direct IO and make the SQLite operation
NAND Flash friendly. Combining the three technical ingredients, we develop
a new journal mode in SQLite, the WALDIO. We implement it on the
commercially available smartphone. WALDIO mode achieves 5.1? performance
(insert/sec) against WAL mode which is the fastest journaling mode in
SQLite. It yields 2.7? performance (inserts/sec) against the LS-MVBT, the
fastest SQLite journaling mode known to public. WALDIO mode achieves 7.4?
performance (insert/sec) against WAL mode when it is relieved from the
overhead of explicitly synchronizing individual log-commit operations.
WALDIO mode reduces the IO volume to 1/6 compared against the WAL mode.

Reply via email to