Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jan 2016 22:34:02 +0800 (AWST)
From:      David Adam <zanchey@ucc.gu.uwa.edu.au>
To:        freebsd-fs@freebsd.org
Subject:   Poor ZFS+NFSv3 read/write performance and panic
Message-ID:  <alpine.DEB.2.11.1601292153420.26396@motsugo.ucc.gu.uwa.edu.au>

next in thread | raw e-mail | index | archive | help
Hi all,

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@ucc.gu.uwa.edu.au




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