G'Day Bill, Folks,
I'll merge my replies with this email, as Eric has done a good job
answering them and has beaten me to it. :)
On Wed, Oct 24, 2007 at 03:52:47PM -0700, Eric Schrock wrote:
> On Wed, Oct 24, 2007 at 06:05:48PM -0400, Bill Sommerfeld wrote:
[...]
> > - What happens if a cache device fails during operation?
>
> Requests for cached data go straight to disk, and performance will
> suffer. The current implementation doesn't integrate with the existing
> ZFS FMA framework, but this will be addressed later as part of future
> FMA updates.
Yes; The current implementation does the following:
For a write error
- the L2ARC headers are invalidated, so subsequent reads for that buffer
will be sent to the original pool vdev as usual.
- kstat zfs::arcstats:arcstat_l2_writes_error is bumped.
For a read error
- The read is resent to the original pool vdev for servicing.
- For cksum erorrs, we bump zfs::arcstats:l2_cksum_bad.
- For io errors, we bump zfs::arcstats:l2_io_error.
> > - What happens if it's missing at boot or during an import? (It sounds
> > like we should be able to drive on with reduced performance).
>
> It will show up as faulted but it will not prevent the pool from being
> imported or used, identical to the way inactive spares behave today.
This looks like:
# zpool status test
pool: test
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
cache
c0t3d0 UNAVAIL 0 0 0 cannot open
errors: No known data errors
> > Other thoughts:
> >
> > 1) Applicability: I'd assume that cache devices only start to get
> > interesting when main memory is already maxed out or if cache storage is
> > fast enough but much cheaper per bit than main memory.
>
> Yes, this only makes sense if your working set size exceeds the size of
> the in-core ARC. As you point out, this may be limited by physical
> capacity or (more likely) price/performance.
Yes, it should be about price/performance as SSDs are getting cheaper,
larger, faster. We do need the system to have a reasonable amount of
RAM to start with, just to hold the metadata for the L2ARC - which
for an 8 Kbyte ZFS recsize currently runs at a 3% ratio. This will mean
about 4 Gbytes of RAM just to drive a 128 Gbyte SSD; unless you are
willing to increase recsize.
Thanks for the questions,
Brendan
--
Brendan
[CA, USA]