NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Any way to "passive commit" to RAM without syncing ?
On Tue, 8 Mar 2016, Hal Murray wrote:
I had a setup for a while to keep working log files in RAM. I have
forgotten the details.
I have done something like that with XFS under Linux. The thing is, WAPBL
logging doesn't seem to have an option (or perhaps I'm just ignorant of
it) for doing logging to a separate block device. Ie.. if I could point to
a MFS device for that, I think that would be pretty close to what I want.
At the very least it'd be a lot like ZFS's ZIL, theoretically.
I've also wondered if I'd be setting myself up for disaster by going into
the kernel code and stretching the flush timers for UFS way way out. I'm
looking in /usr/src/sys/ufs/ffs at ffs_vnops.c and ffs_vfsops.c for any
kind of timers or tunables, but wasn't finding much. I found where fsync()
ffs_full_fsync() get defined, but nothing jumped out at me. Looking at
/usr/src/sys/ufs/ufs there seems to be more relevant code. The problem is
that I can see several places where I'm going to shoot myself in the foot
trying to delay or defer a write. Not having done my Ph.D thesis in file
systems, I find I'm a bit intimidated (but I'll try it anyhow, what the
hell).
So, the bottom line is that it looks like the folks who've suggested some
kind of work-in-RAM and periodically copy-to-physical approach are onto
the only working setup like this.
It seems like if there is some general way to perform asynchronous
"logging" to a RAM-based device, it's not easy. I'm assuming this because
so few implementations exist. The one that comes to mind right away is the
DRBD async log shipping mode which is a for $$$ only killer-feature in
DRBD. In the best case scenario, it can theoretically give you full speed
access to a local block device, while still allowing you to have a
mirrored block device in another state with 80ms latency or something. All
you have to do have a big enough buffer and enough bandwidth to handle any
backlog that accumulates.
That approach seems like one that could be generalized into a cache-layer
for any file system. Sprite did that but only for it's native file system,
Cachefs for Solaris does that, too. RAM is now pretty cheap and the volume
is big enough that I can operate out of my 2-3 Gb home directory and if
that was fully cached, it still wouldn't matter on my systems with 16-24
Gb of RAM. It's just an interesting thought.
-Swift
Home |
Main Index |
Thread Index |
Old Index