Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Nov 2017 06:56:24 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-fs@FreeBSD.org
Subject:   [Bug 222929] ZFS ARC stats have wrong count
Message-ID:  <bug-222929-3630-1d9aW81bV0@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-222929-3630@https.bugs.freebsd.org/bugzilla/>
References:  <bug-222929-3630@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D222929

--- Comment #7 from Allan Jude <allanjude@FreeBSD.org> ---
I have confirmed the impact you are seeing, but also confirmed that is not a
major bug.

If you run: zpool iostat 1

You'll see that running your ruby script will not actually result in any re=
ads
from the disk.

There is a small issue with the stats accounting in ZFS, where if the metad=
ata
being read, happens to be stored in an "Embedded Block Pointer" (so instead=
 of
being stored as a data block, the data is embedded in the parent block, to =
save
an entire sector, and to save an I/O to read that sector), then it is
incorrectly counted as a miss.

This is because to read the embedded block pointer, it has to create a read=
 zio
and go through most of the process of doing a read, but then ends up copying
the data out of the block pointer instead of from disk.


Anyway, I am investigating a quick fixes to account for the cache hit
correctly, instead of as a cache miss.

I am also looking to see if it would be relatively simple to optimize the c=
ase
and return the data more directly in arc_read() instead of creating a zio a=
nd
going the currently more complicated path. This path mostly exists because =
it
makes it possible for other functions to not need to know about the embedded
block pointer feature.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-222929-3630-1d9aW81bV0>