Re: [ANNOUNCE] Ramback: faster than a speeding bullet

From: Grzegorz Kulewski
Date: Mon Mar 10 2008 - 04:20:19 EST


On Sun, 9 Mar 2008, Daniel Phillips wrote:
Every little factor of 25 performance increase really helps.

Ramback is a new virtual device with the ability to back a ramdisk
by a real disk, obtaining the performance level of a ramdisk but with
the data durability of a hard disk. To work this magic, ramback needs
a little help from a UPS. In a typical test, ramback reduced a 25
second file operation[1] to under one second including sync. Even
greater gains are possible for seek-intensive applications.

The difference between ramback and an ordinary ramdisk is: when the
machine powers down the data does not vanish because it is continuously
saved to backing store. When line power returns, the backing store
repopulates the ramdisk while allowing application io to proceed
concurrently. Once fully populated, a little green light winks on and
file operations once again run at ramdisk speed.

So now you can ask some hard questions: what if the power goes out
completely or the host crashes or something else goes wrong while
critical data is still in the ramdisk? Easy: use reliable components.
Don't crash. Measure your UPS window. This is not much to ask in
order to transform your mild mannered hard disk into a raging superdisk
able to leap tall benchmarks at a single bound.

If line power goes out while ramback is running, the UPS kicks in and a
power management script switches the driver from writeback to
writethrough mode. Ramback proceeds to save all remaining dirty data
while forcing each new application write through to backing store
immediately.

If UPS power runs out while ramback still holds unflushed dirty data
then things get ugly. Hopefully a fsck -f will be able to pull
something useful out of the mess. (This is where you might want to be
running Ext3.) The name of the game is to install sufficient UPS power
to get your dirty ramdisk data onto stable storage this time, every
time.

Are you using barriers or ordered disk writes with physical sync in the right moments or something like that? I think this is needed to allow any journaling filesystem to do it's job right.


The basic design premise of ramback is alluringly simple: each write to
a ramdisk sets a per-chunk dirty bit. A kernel daemon continuously
scans for and flushes dirty chunks to backing store.


Thanks,

GK

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/