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/>
index | next in thread | previous in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222929 --- 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 reads from the disk. There is a small issue with the stats accounting in ZFS, where if the metadata 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 case and return the data more directly in arc_read() instead of creating a zio and 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. -- You are receiving this mail because: You are the assignee for the bug.home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-222929-3630-1d9aW81bV0>
