I've had this happen to me too. I found some dtrace scripts at the
time that showed that the file system was spending too much time
finding available 128k blocks or the like as I was near full per each
disk, even though combined I still had 140GB left of my 3TB pool. The
SPA code I believe it was was spending too much time walking the
available pool for continguous space for new writes, and this
affecting both read and write performance dramatically (measured in
kb/sec).

I was able to alleviate the pressure so to speak by adjusting the
recordsize for the pool down to 8k (32k is likely more recommended)
and from there I could then start to clear out space. Anything below
10% available space seems to cause ZFS to start behaving poorly, and
getting down lower increases the problems. But the root cause was
metadata management on pools w/ less than 5-10% disk space left.

In my case, I had lots of symlinks, lots of small files, and also
dozens of snapshots. My pool was a RAID10 (aka, 3 mirror sets
striped).


On Sun, Dec 27, 2009 at 4:52 PM, Morten-Christian Bernson <m...@uib.no> wrote:
> Lately my zfs pool in my home server has degraded to a state where it can be 
> said it doesn't work at all.  Read spead is slower than I can read from the 
> internet on my slow dsl-line... This is compared to just a short while ago, 
> where I could read from it with over 50mb/sec over the network.
>
> My setup:
> Running latest Solaris 10: # uname -a
> SunOS solssd01 5.10 Generic_142901-02 i86pc i386 i86pc
>
> # zpool status DATA
>  pool: DATA
>  state: ONLINE
> config:
>        NAME        STATE     READ WRITE CKSUM
>        DATA        ONLINE       0     0     0
>          raidz1    ONLINE       0     0     0
>            c2t5d0  ONLINE       0     0     0
>            c2t4d0  ONLINE       0     0     0
>            c2t3d0  ONLINE       0     0     0
>            c2t2d0  ONLINE       0     0     0
>        spares
>          c0t2d0    AVAIL
> errors: No known data errors
>
> # zfs list -r DATA
> NAME                               USED  AVAIL  REFER  MOUNTPOINT
> DATA                              3,78T   229G  3,78T  /DATA
>
> All of the drives in this pool are 1.5tb western digital green drives. I am 
> not seeing any error messages in /var/adm/messages, and "fmdump -eV" shows no 
> errors...   However, I am seeing some soft faults in "iostat -eEn":
>  ---- errors ---
>  s/w h/w trn tot device
>  2   0   0   2 c0t0d0
>  1   0   0   1 c1t0d0
>  2   0   0   2 c2t1d0
> 151   0   0 151 c2t2d0
> 151   0   0 151 c2t3d0
> 153   0   0 153 c2t4d0
> 153   0   0 153 c2t5d0
>  2   0   0   2 c0t1d0
>  3   0   0   3 c0t2d0
>  0   0   0   0 solssd01:vold(pid531)
> c0t0d0           Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
> Vendor: Sun      Product: STK RAID INT     Revision: V1.0 Serial No:
> Size: 31.87GB <31866224128 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 2 Predictive Failure Analysis: 0
> c1t0d0           Soft Errors: 1 Hard Errors: 0 Transport Errors: 0
> Vendor: _NEC     Product: DVD_RW ND-3500AG Revision: 2.16 Serial No:
> Size: 0.00GB <0 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 1 Predictive Failure Analysis: 0
> c2t1d0           Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
> Vendor: ATA      Product: SAMSUNG HD753LJ  Revision: 1113 Serial No:
> Size: 750.16GB <750156373504 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 2 Predictive Failure Analysis: 0
> c2t2d0           Soft Errors: 151 Hard Errors: 0 Transport Errors: 0
> Vendor: ATA      Product: WDC WD15EADS-00R Revision: 0A01 Serial No:
> Size: 1500.30GB <1500301909504 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 151 Predictive Failure Analysis: 0
> c2t3d0           Soft Errors: 151 Hard Errors: 0 Transport Errors: 0
> Vendor: ATA      Product: WDC WD15EADS-00R Revision: 0A01 Serial No:
> Size: 1500.30GB <1500301909504 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 151 Predictive Failure Analysis: 0
> c2t4d0           Soft Errors: 153 Hard Errors: 0 Transport Errors: 0
> Vendor: ATA      Product: WDC WD15EADS-00R Revision: 0A01 Serial No:
> Size: 1500.30GB <1500301909504 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 153 Predictive Failure Analysis: 0
> c2t5d0           Soft Errors: 153 Hard Errors: 0 Transport Errors: 0
> Vendor: ATA      Product: WDC WD15EADS-00R Revision: 0A01 Serial No:
> Size: 1500.30GB <1500301909504 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 153 Predictive Failure Analysis: 0
> c0t1d0           Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
> Vendor: Sun      Product: STK RAID INT     Revision: V1.0 Serial No:
> Size: 31.87GB <31866224128 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 2 Predictive Failure Analysis: 0
> c0t2d0           Soft Errors: 3 Hard Errors: 0 Transport Errors: 0
> Vendor: Sun      Product: STK RAID INT     Revision: V1.0 Serial No:
> Size: 1497.86GB <1497859358208 bytes>
> Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
> Illegal Request: 3 Predictive Failure Analysis: 0
>
> I am curious as to why the counter for "Illegal request" goes up all the 
> time.  The machine was rebooted ~11 hours ago, and it goes up all the time 
> when I try to use the pool...
>
> The machine is a quite powerful one, and top shows no cpu load, no iowait and 
> plenty of available memory.  The machine basicly doesn't do anything at the 
> moment, still it can take several minutes to copy a 300mb file from somewhere 
> in the pool to /tmp/...
> # top
> last pid:  1383;  load avg:  0.01,  0.00,  0.00;  up 0+10:47:57               
>                                                    01:39:17
> 55 processes: 54 sleeping, 1 on cpu
> CPU states: 99.0% idle,  0.0% user,  1.0% kernel,  0.0% iowait,  0.0% swap
> Kernel: 193 ctxsw, 3 trap, 439 intr, 298 syscall, 3 flt
> Memory: 8186M phys mem, 4699M free mem, 2048M total swap, 2048M free swap
>
> I thought I might have run into problems described here on the forums with 
> the ARC and fragmentation, but it doesn't seem so:
> # echo "::arc"|mdb -k
> hits                      =    490044
> misses                    =     37004
> demand_data_hits          =    282392
> demand_data_misses        =      2113
> demand_metadata_hits      =    191757
> demand_metadata_misses    =     21034
> prefetch_data_hits        =       851
> prefetch_data_misses      =     10265
> prefetch_metadata_hits    =     15044
> prefetch_metadata_misses  =      3592
> mru_hits                  =     73416
> mru_ghost_hits            =        16
> mfu_hits                  =    401500
> mfu_ghost_hits            =        24
> deleted                   =      1555
> recycle_miss              =         0
> mutex_miss                =         0
> evict_skip                =      1487
> hash_elements             =     37032
> hash_elements_max         =     37045
> hash_collisions           =     10094
> hash_chains               =      4365
> hash_chain_max            =         4
> p                         =      3576 MB
> c                         =      7154 MB
> c_min                     =       894 MB
> c_max                     =      7154 MB
> size                      =      1797 MB
> hdr_size                  =   8002680
> data_size                 = 1866272256
> other_size                =  10519712
> l2_hits                   =         0
> l2_misses                 =         0
> l2_feeds                  =         0
> l2_rw_clash               =         0
> l2_read_bytes             =         0
> l2_write_bytes            =         0
> l2_writes_sent            =         0
> l2_writes_done            =         0
> l2_writes_error           =         0
> l2_writes_hdr_miss        =         0
> l2_evict_lock_retry       =         0
> l2_evict_reading          =         0
> l2_free_on_write          =         0
> l2_abort_lowmem           =         0
> l2_cksum_bad              =         0
> l2_io_error               =         0
> l2_size                   =         0
> l2_hdr_size               =         0
> memory_throttle_count     =         0
> arc_no_grow               =         0
> arc_tempreserve           =         0 MB
> arc_meta_used             =       372 MB
> arc_meta_limit            =      1788 MB
> arc_meta_max              =       372 MB
>
> I then tried to start a scrub, and it seems like it will take forever... It 
> used to take a few hours, now it says it will be done in almost 700 hours:
>  scrub: scrub in progress for 4h43m, 0,68% done, 685h2m to go
>
> Does anyone have any clue as to what is happening, and what I can do?  If a 
> disk is failing without the OS noticing, it would be nice to find a way to 
> know which drive it is, and get it exchanged before it's too late.
>
> All help is apreciated...
>
> Yours sincerly,
> Morten-Christian Bernson
> --
> This message posted from opensolaris.org
> _______________________________________________
> zfs-discuss mailing list
> zfs-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
>
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to