Poor ZFS+NFSv3 read/write performance and panic

David Adam zanchey at ucc.gu.uwa.edu.au
Sun Feb 7 16:59:26 UTC 2016


Just wondering if anyone has any idea how to identify which devices are 
implicated in ZFS' vdev_deadman(). I have updated the firmware on the 
mps(4) card that has our disks attached but that hasn't helped.

Thanks

David

On Fri, 29 Jan 2016, David Adam wrote:
> We have a FreeBSD 10.2 server sharing some ZFS datasets over NFSv3. It's 
> worked well until recently, but has started to routinely perform 
> exceptionally poorly, eventually panicing in vdev_deadman() (which I 
> understand is a feature).
> 
> Initally after booting, things are fine, but performance rapidly begins to 
> degrade. Both read and write performance is terrible, with many operations 
> either hanging indefinitely or timing out.
> 
> When this happens, I can break into DDB and see lots of nfsd process stuck 
> waiting for a lock:
> Process 784 (nfsd) thread 0xfffff80234795000 (100455)
> shared lockmgr zfs (zfs) r = 0 (0xfffff8000b91f548) locked @ 
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c:2196
> 
> and the backtrace looks like this:
>   sched_switch() at sched_switch+0x495/frame 0xfffffe04677740b0
>   mi_switch() at mi_switch+0x179/frame 0xfffffe04677740f0
>   turnstile_wait() at turnstile_wait+0x3b2/frame 0xfffffe0467774140
>   __mtx_lock_sleep() at __mtx_lock_sleep+0x2c0/frame 0xfffffe04677741c0
>   __mtx_lock_flags() at __mtx_lock_flags+0x102/frame 0xfffffe0467774210
>   vmem_size() at vmem_size+0x5a/frame 0xfffffe0467774240
>   arc_reclaim_needed() at arc_reclaim_needed+0xd2/frame 0xfffffe0467774260
>   arc_get_data_buf() at arc_get_data_buf+0x157/frame 0xfffffe04677742a0
>   arc_read() at arc_read+0x68b/frame 0xfffffe0467774350
>   dbuf_read() at dbuf_read+0x7ed/frame 0xfffffe04677743f0
>   dmu_tx_check_ioerr() at dmu_tx_check_ioerr+0x8b/frame 0xfffffe0467774420
>   dmu_tx_count_write() at dmu_tx_count_write+0x17e/frame 0xfffffe0467774540
>   dmu_tx_hold_write() at dmu_tx_hold_write+0xba/frame 0xfffffe0467774580
>   zfs_freebsd_write() at zfs_freebsd_write+0x55d/frame 0xfffffe04677747b0
>   VOP_WRITE_APV() at VOP_WRITE_APV+0x193/frame 0xfffffe04677748c0
>   nfsvno_write() at nfsvno_write+0x13e/frame 0xfffffe0467774970
>   nfsrvd_write() at nfsrvd_write+0x496/frame 0xfffffe0467774c80
>   nfsrvd_dorpc() at nfsrvd_dorpc+0x66b/frame 0xfffffe0467774e40
>   nfssvc_program() at nfssvc_program+0x4e6/frame 0xfffffe0467774ff0
>   svc_run_internal() at svc_run_internal+0xbb7/frame 0xfffffe0467775180
>   svc_run() at svc_run+0x1db/frame 0xfffffe04677751f0
>   nfsrvd_nfsd() at nfsrvd_nfsd+0x1f0/frame 0xfffffe0467775350
>   nfssvc_nfsd() at nfssvc_nfsd+0x124/frame 0xfffffe0467775970
>   sys_nfssvc() at sys_nfssvc+0xb7/frame 0xfffffe04677759a0
>   amd64_syscall() at amd64_syscall+0x278/frame 0xfffffe0467775ab0
>   Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe0467775ab0
> 
> Is this likely to be due to bad hardware? I can't see any problems in
> the SMART data, and `camcontrol tags da0 -v` etc. does not reveal any
> particularly long queues. Are there other useful things to check?
> 
> If not, do you have any other ideas? I can make the full DDB information 
> available if that would be helpful.
> 
> The pool is configured thus:
>         NAME                  STATE     READ WRITE CKSUM
>         space                 ONLINE       0     0     0
>           mirror-0            ONLINE       0     0     0
>             da0               ONLINE       0     0     0
>             da1               ONLINE       0     0     0
>           mirror-1            ONLINE       0     0     0
>             da2               ONLINE       0     0     0
>             da3               ONLINE       0     0     0
>           mirror-2            ONLINE       0     0     0
>             da4               ONLINE       0     0     0
>             da6               ONLINE       0     0     0
>           mirror-3            ONLINE       0     0     0
>             da7               ONLINE       0     0     0
>             da8               ONLINE       0     0     0
>         logs
>           mirror-4            ONLINE       0     0     0
>             gpt/molmol-slog   ONLINE       0     0     0
>             gpt/molmol-slog0  ONLINE       0     0     0
> where the da? devices are WD Reds and the SLOG partitions are on Samsung 
> 840s.
> 
> Many thanks,
> 
> David Adam
> zanchey at ucc.gu.uwa.edu.au
> 
> _______________________________________________
> freebsd-fs at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
> 

Cheers,

David Adam
zanchey at ucc.gu.uwa.edu.au
Ask Me About Our SLA!


More information about the freebsd-fs mailing list