Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Dec 2009 17:13:15 +0100
From:      =?ISO-8859-1?Q?Micka=EBl_Maillot?= <mickael.maillot@gmail.com>
To:        freebsd-fs@freebsd.org
Subject:   ZFS prefetch problem
Message-ID:  <ea7b7b810912310813x61af52acs5ecabd5615ce83d8@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
this bug is referenced:
http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6859997
and a good description can be found here:
http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6861397
and a long thread on zfs-discuss
http://mail.opensolaris.org/pipermail/zfs-discuss/2009-July/029710.html

i use bob friesenhahn's script to test (with little mod)
http://www.simplesystems.org/users/bfriesen/zfs-discuss/zfs-cache-test.ksh

so i test on my hardware for reading 3000 8M files

without prefetch: no problem
initial
real    7m49.039s
user    0m2.931s
sys     0m22.574s
second
real    7m48.080s
user    0m2.858s
sys     0m32.559s

with prefetch enable:
initial
real    2m55.163s
user    0m2.244s
sys     0m10.072s
second
real    7m37.522s
user    0m2.367s
sys     0m10.565s

ok i hit the same bug.
it was fix by this commit:
http://hg.intevation.org/mirrors/opensolaris.org/onnv-gate/rev/0e96dd3b905a
which add kstats for prefetch and a bug in rollback (not for us)

the only modif for the prefetch + arc problem is resolv by:
--- dmu_zfetch.c.orig   2009-12-31 15:46:15.211700719 +0100
+++ dmu_zfetch.c        2009-12-31 15:46:42.915461251 +0100
@@ -323,7 +323,8 @@
                 * we will read "len" blocks before "striding".
                 */
                if (zh->zst_offset >= zs->zst_offset &&
-                   zh->zst_offset < zs->zst_offset + zs->zst_len) {
+                   zh->zst_offset < zs->zst_offset + zs->zst_len &&
+                       prefetched) {
                        /* already fetched */
                        rc = 1;
                        goto out;

with this patch i have:
initial
real    2m57.614s
user    0m2.228s
sys     0m10.054s
second
real    2m45.403s
user    0m2.445s
sys     0m9.726s
third
real    2m16.381s
user    0m2.152s
sys     0m9.136s

looks good.
tested on 8-STABLE amd64, with/without log/cache ssd. (but not with zil_disable)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ea7b7b810912310813x61af52acs5ecabd5615ce83d8>