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>