On 6/14/2010 12:10 PM, Neil Perrin wrote:
On 06/14/10 12:29, Bob Friesenhahn wrote:
On Mon, 14 Jun 2010, Roy Sigurd Karlsbakk wrote:
It is good to keep in mind that only small writes go to the dedicated
slog. Large writes to to main store. A succession of that many small
writes (to fill RAM/2) is highly unlikely. Also, that the zil is not
read back unless the system is improperly shut down.
I thought all sync writes, meaning everything NFS and iSCSI, went
into the slog - IIRC the docs says so.
Check a month or two back in the archives for a post by Matt Ahrens.
It seems that larger writes (>32k?) are written directly to main
store. This is probably a change from the original zfs design.
If there's a slog then the data, regardless of size, gets written to
If there's no slog and if the data size is greater than
(both default to 32K) then the data is written as a block into the
pool and the block pointer
written into the log record. This is the WR_INDIRECT write type.
So Matt and Roy are both correct.
But wait, there's more complexity!:
If logbias=throughput is set we always use WR_INDIRECT.
If we just wrote more than 1MB for a single zil commit and there's
more than 2MB waiting
then we start using the main pool.
Clear as mud? This is likely to change again...
How do I monitor the amount of live (i.e. non-committed) data in the
slog? I'd like to spend some time with my setup, seeing exactly how
much I tend to use.
I'd suspect that very few use cases call for more than a couple (2-4) GB
I'm trying to get hard numbers as I'm working on building a
DRAM/battery/flash slog device in one of my friend's electronics
prototyping shops. It would be really nice if I could solve 99% of the
need with 1 or 2 2GB SODIMMs and the chips from a cheap 4GB USB thumb
Java System Support
Santa Clara, CA
zfs-discuss mailing list