• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

zfs server slowness

packetboy

Limp Gawd
Joined
Aug 2, 2009
Messages
288
I have 5 different ZFS servers now running on various CPU/motherboard combinations as well as different versions of Solaris, OI and FreeBSD.

I have been having a nightmare of performance problems with the one I have running OI151a4. I thought these was related to the backreved LSI HBA firmware that I was running...I finally got that HBA replaced with an LSI 9200-8e running the latest firmware (v14) and am STILL having problems.

Basically, it seems that the server is sluggish even when there is apparently no load on the server at all and as soon as you put even a very light load of NFS activity (e.g. 1MB/s of writes) performance immediately goes in the toilet.

The behavior seems very similar to what others have reported as a result of bad 'cstates' power management under various flavors of Solaris (I'm heard that Nexenta best practices include disabling c-states in the BIOS).

I've not only disabled cstates on the motherboard (Supermicro X8DLT), but have also disabled power management in /etc/power.conf.

I'm not sure if this is normal or a sympton of the problem, but when I run the hotkernel Dtrace script, it always shows a high rates of hits on 'unix`i86_mwait':

Code:
DTraceToolkit-0.99# uname -a
SunOS zulu01 5.11 oi_151a4 i86pc i386 i86pc Solaris

...
unix`mutex_enter                                           14   0.0%
unix`page_nextn                                            35   0.0%
genunix`fsflush_do_pages                                   65   0.1%
unix`i86_mwait                                          87048  99.7%

# tail /etc/power.conf
# 2012-05-29 - try disable power mgmt
cpupm                   disable

#cpupm enable poll-mode
# 2012-05-29 - disable deep idle as per http://wesunsolve.net/bugid/id/6958068 
cpu_deep_idle           disable



# dd if=/rz2pool/kvmdiskimages/winxpmalnet/winxp.qcow2 of=/dev/null bs=128k
1248+0 records in
1248+0 records out
163577856 bytes (164 MB) copied, 0.650629 s, 251 MB/s

When I run hotkernel on a Solaris 10 box on an idle machine, all the time is spent in cpu_idle, which would seem as expected. Confusingly (even with Cstates disabled int he BIOS, CPU spends most of it's time in C1 state):

Code:
 # uname -a
SunOS zulu03 5.10 Generic_142910-17 i86pc i386 i86pc

...
unix`mutex_delay_default                                  104   0.1%
genunix`avl_find                                          161   0.1%
genunix`avl_destroy_nodes                                 294   0.2%
unix`cpu_idle                                          174545  99.1%

# powertop

C-states (idle power)   Avg     Residency                                                                         P-states (frequencies)
C0 (cpu running)                (0.7%) 
C1                      2.2ms   (99.3%)

Here's Solaris 11 (power management is in the default setup as I'm not even sure how to disable on S11)...it seems to be doing the same as OI151, 'mwait':

Code:
# uname -a
SunOS zulu04 5.11 11.0 i86pc i386 i86pc

...
unix`hat_tlb_inval                                         68   0.2%
unix`mutex_enter                                           98   0.2%
unix`do_splx                                              168   0.4%
unix`i86_mwait                                          41303  97.7%

Cstates are definitely enabled here as evidenced running powertop:
(I have not yet disabled Cstates in the BIOS on this server)
# powertop
C-states (idle power)   Avg     Residency                                                                         P-states (frequencies)
C0 (cpu running)                (0.0%)
C1                      1.0ms   (17.5%) 
C2                      2.3ms   (38.8%)  
C3                      2.7ms   (43.7%)

Here's FreeBSD9 where we also get some 'mwait' but almost all is in a different entry point 'acpi_cpu_c1' which I presume is indicating cpu is in C1 state. Obviously, this is a different implementation of ZFS so again, not sure if this is expected behavior.

Code:
zulu02# uname -a
FreeBSD zulu02 9.0-RELEASE-p4 FreeBSD 9.0-RELEASE-p4 #2: Sun Sep  9 23:27:59 EDT 2012     root@zulu02:/usr/obj/usr/src/sys/CAPTURE  amd64


0xffffffff81a6f40f                                        897   0.4%
kernel`hpet_get_timecount                                2483   1.1%
kernel`cpu_idle_mwait                                   18401   7.9%
kernel`acpi_cpu_c1                                     205269  88.6%

Anyone know if high 'mwait' is normal for idle system?

Can others try running hotkernel on an idle system and post what you see?

Plz indicate your os version, Cstates BIOS settings, and power.conf settings.

You can get Dtrace tool kit here:

http://www.brendangregg.com/DTraceToolkit-0.99.tar.gz
 
this is still a mystery on OI ZFS for my local home backup server for me.

on mine using NFS, the transfer will be degrading incrementally where transferring many small files.
The transfer would stop or very very slowly (mimicking "hang" situation).

one curiosity is, windows shares are working as I expecting without "NFS slowness" symptom.

At the end, I scrap my OI ZFS system and replace with ZoL on centos 6.3, everything goes smoothly for NFS.
I use NFS 80% for backing-up/transferring files.

if you can find the solution for OI, that would be a good idea to start for me.
 
Not sure what your issue is, I do nfs with oi zfs with >100Million small files (<16k), a very large mailspool. I haven't had any slowness issues with them at all.

normal nfs usage is approx 5MB/sec, and I can easily reach 100MB/sec rates.

Maybe more description of the hardware?
 
Looks like seeing 'mwait' on the kernel stack when the system is idle may be expected behavior as at some point mwait is used to implement the Solaris 'idle loop':

http://docs.oracle.com/cd/E19957-01/820-0724/ggdqv/index.html

"x86: MONITOR and MWAIT CPU Idle Loop

This kernel functions enhancement is new in the Developer 9/07 release.

The Solaris OS uses the SSE3 MONITOR and MWAIT instructions in x86 processor idle loop. Using the SSE3 instructions in the processor idle loop eliminates the overhead of sending and receiving an interrupt to wake up a halted processor. MONITOR is used to specify a memory range to “monitor”. MWAIT halts the processor until the address previously specified with MONITOR is accessed. With the new idle loop a processor only has to write to memory to wake up a halted processor."
 
More details of hardware setup and problems:

* SMC X8DTL
* 32GB RAM
* 10 x Hitachi 2TB 3Gbps Sata
* HP SAS Expander
* Norco SAS chassis
* LSI 9200-8e HBA (v14.0 FW)

pool: rz2pool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
rz2pool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
c9t5000CCA221D6F23Ad0 ONLINE 0 0 0
c9t5000CCA221DAD063d0 ONLINE 0 0 0
c9t5000CCA221D42148d0 ONLINE 0 0 0
c9t5000CCA221D6F22Dd0 ONLINE 0 0 0
c9t5000CCA221D4210Ed0 ONLINE 0 0 0
c9t5000CCA221DAA15Cd0 ONLINE 0 0 0
c9t5000CCA221D4204Dd0 ONLINE 0 0 0
c9t5000CCA221D6824Ad0 ONLINE 0 0 0
c9t5000CCA221DAA118d0 ONLINE 0 0 0
spares
c9t5000CCA221D4213Ad0 AVAIL

Running Filebench singlestreamread, 45G test file.

During creation of the test file, caps at about 50MB/s write:

Code:
# /usr/local/bin/filebench -f /usr/local/share/filebench/workloads/singlestreamread2.f
Filebench Version 1.4.9.1
 6509: 0.000: Allocated 126MB of shared memory
 6509: 0.004: Single Stream Read Version 3.0 personality successfully loaded
 6509: 0.005: Creating/pre-allocating files and filesets
 6509: 0.005: File largefile1: 40960.000MB
 6509: 0.011: Removed any existing file largefile1 in 1 seconds
 6509: 0.011: making tree for filset /rz2pool/largefile1
 6509: 0.011: Creating file largefile1...


root@zulu01:~# zpool iostat 10 10
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----

hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0     10      0  20.6K
rz2pool     13.8T  2.48T      0    539      0  47.2M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.48T      3    558  13.8K  51.7M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.48T     10    437  44.0K  42.3M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.47T      0    456      0  41.9M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.47T      0    536      0  49.0M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----

(3 minutes later there is some improvement, but still seem very low given the number of spindles on this system):

root@zulu01:~# zpool iostat 10 10
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write

----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.45T      5  1.02K   652K   110M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.45T      0  1.10K      0   123M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.44T      4  1.03K   614K   108M
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----


Filebench read test shows ~60MB/s...zpool iostat confirms this:

Code:
 6509: 413.340: Running...
 6509: 473.933: Run took 60 seconds...
 6509: 473.934: Per-Operation Breakdown
seqread              3529ops       58ops/s  58.2mb/s     17.1ms/op      645us/op-cpu [0ms - 1027ms]
 6509: 473.934: IO Summary:  3529 ops, 58.242 ops/s, (58/0 r/w),  58.2mb/s,   7423us cpu/op,  17.1ms latency
 6509: 473.934: Shutting down processes

root@zulu01:~# zpool iostat 10 10
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0     24      0   150K
rz2pool     13.8T  2.43T    464     44  58.1M   735K
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.43T    373     60  46.6M   833K
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.43T    450     43  56.3M   562K
salvage      377M  1.36T      0      0      0      0
----------  -----  -----  -----  -----  -----  -----
hold         750G  3.35T      0      0      0      0
rpool       30.8G   201G      0      0      0      0
rz2pool     13.8T  2.43T    327     58  41.0M  1.59M
salvage      377M  1.36T      0      0      0      0

Granted the pool is very full right now (2TB free out of 13TB), however, 50MB/s read and right seems ridiculous.....Systems *should* be able to do about 1000MB/s (with the HP Sas expander being the limiting factor).

I know I'm only doing single threaded test above...going to try some multi threaded next.
 
have you checked for faults? fmadm faulty?

one drive throwing errors anywhere in the SES chain can cause problems.
 
nothing showing in fmadm.

I *DO* intermittently see this in /var/adm/messages:

Code:
Nov 10 15:05:25 zulu01 unix: [ID 954099 kern.info] NOTICE: IRQ19 is being shared by drivers with different interrupt levels.
Nov 10 15:05:25 zulu01 This may result in reduced system performance.
Nov 10 15:05:25 zulu01 unix: [ID 954099 kern.info] NOTICE: IRQ19 is being shared by drivers with different interrupt levels.
Nov 10 15:05:25 zulu01 This may result in reduced system performance.
Nov 10 15:05:26 zulu01 unix: [ID 954099 kern.info] NOTICE: IRQ19 is being shared by drivers with different interrupt levels.
Nov 10 15:05:26 zulu01 This may result in reduced system performance.

This seems like it would be a non issue though as it seems that USB and *SATA* controller are what are sharing INT 19...I don't even have any USB devices...however, is there some way this could still have a major impact on the SATA controller (which *IS* where the boot disks are!?):

Code:
root@zulu01:/rz2pool/cytel/tools/dtrace# ./interrup_list.sh 
IRQ  Vect IPL Bus    Trg Type   CPU Share APIC/INT# ISR(s) 
9    0x80 9   PCI    Lvl Fixed  1   1     0x0/0x9   acpi_wrapper_isr
11   0xd1 14  PCI    Lvl Fixed  2   1     0x0/0xb   hpet_isr
16   0x84 9   PCI    Lvl Fixed  1   1     0x0/0x10  uhci_intr
18   0x82 9   PCI    Lvl Fixed  7   2     0x0/0x12  uhci_intr, ehci_intr
19   0x86 9   PCI    Lvl Fixed  3   4     0x0/0x13  uhci_intr, uhci_intr, 0, 
ata_intr
21   0x85 9   PCI    Lvl Fixed  2   1     0x0/0x15  uhci_intr
23   0x83 9   PCI    Lvl Fixed  0   2     0x0/0x17  uhci_intr, ehci_intr
32   0x20 2          Edg IPI    all 1     -         cmi_cmci_trap
48   0x81 7   PCI    Edg MSI    4   1     -         pcieb_intr_handler
49   0x41 5   PCI    Edg MSI    5   1     -         mpt_intr
50   0x30 4   PCI    Edg MSI    6   1     -         pcieb_intr_handler
51   0x60 6   PCI    Edg MSI    3   1     -         e1000g_intr_pciexpress
52   0x40 5   PCI    Edg MSI    4   1     -         mptsas_intr
160  0xa0 0          Edg IPI    all 0     -         poke_cpu
208  0xd0 14         Edg IPI    all 1     -         kcpc_hw_overflow_intr
209  0xd3 14         Edg IPI    all 1     -         cbe_fire
210  0xd4 14         Edg IPI    all 1     -         cbe_fire
240  0xe0 15         Edg IPI    all 1     -         xc_serv
241  0xe1 15         Edg IPI    all 1     -         apic_error_intr
root@zulu01:/rz2pool/cytel/tools/dtrace# cat interrup_list.sh 
echo "::interrupts" | mdb -k
 
Last edited:
OK..now I'm really confused...decided to do an iostat while filebench running (8 threads)...even with 8 threads filebench test maxing out at 100-200MB/s:

Code:
 7163: 207.167: Per-Operation Breakdown
seqread              17120ops      106ops/s 106.0mb/s     75.2ms/op      807us/op-cpu [0ms - 5020ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
seqread              0ops        0ops/s   0.0mb/s      0.0ms/op        0us/op-cpu [18446744073709ms - 0ms]
 7163: 207.167: IO Summary: 17120 ops, 106.061 ops/s, (106/0 r/w), 106.0mb/s,   7432us cpu/op,  75.2ms latency

iostat shows each drive only handling 10-20MB/s (which is nowhere near their 100-150MB/s capability) and yet iostat says each drive is 90-100% busy!? wtf?



Code:
root@zulu01:/rz2pool/cytel/tools/dtrace# iostat -cnxz 10

                    extended device statistics              
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.1    0.0    0.1    0.0  0.0  0.3    0.0 3173.1   0  32 c3d0
  362.5   15.2 16230.2   62.9  0.0 10.0    0.0   26.5   0 100 c9t5000CCA221DAD063d0
  352.6   15.7 15318.3   63.0  0.0 10.0    0.0   27.1   0 100 c9t5000CCA221DAA118d0
  356.8   15.2 15343.8   63.5  0.0  9.1    0.0   24.4   0  93 c9t5000CCA221D42148d0
  362.2   15.4 15744.4   62.6  0.0  8.9    0.0   23.7   0  93 c9t5000CCA221D6824Ad0
  350.2   15.9 13610.3   62.5  0.0  8.5    0.0   23.3   0  90 c9t5000CCA221D6F23Ad0
  362.8   15.7 15770.8   63.6  0.0  9.9    0.0   26.2   0 100 c9t5000CCA221DAA15Cd0
  338.4   15.6 12904.6   62.6  0.0  8.8    0.0   25.0   0  92 c9t5000CCA221D4204Dd0
  336.4   15.4 12645.8   62.9  0.0  7.9    0.0   22.4   0  84 c9t5000CCA221D6F22Dd0
  372.2   15.3 16002.6   63.5  0.0  9.6    0.0   24.8   0  98 c9t5000CCA221D4210Ed0
     cpu
 us sy wt id
  0  4  0 96
                    extended device statistics              
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
  377.8   13.2 17597.5   55.0  0.0 10.0    0.0   25.6   0 100 c9t5000CCA221DAD063d0
  381.7   13.0 17041.0   55.2  0.0 10.0    0.0   25.3   0 100 c9t5000CCA221DAA118d0
  365.9   13.0 16550.3   55.0  0.0  9.7    0.0   25.5   0  98 c9t5000CCA221D42148d0
  352.1   13.1 16471.4   54.8  0.0  8.9    0.0   24.4   0  92 c9t5000CCA221D6824Ad0
  359.2   13.0 14927.5   54.8  0.0  8.6    0.0   23.1   0  90 c9t5000CCA221D6F23Ad0
  363.9   12.7 16407.4   55.0  0.0 10.0    0.0   26.5   0 100 c9t5000CCA221DAA15Cd0
  344.7   13.0 14208.9   54.6  0.0  8.1    0.0   22.7   0  86 c9t5000CCA221D4204Dd0
  342.6   13.0 14122.0   54.4  0.0  8.6    0.0   24.2   0  89 c9t5000CCA221D6F22Dd0
  349.8   12.9 16339.4   54.7  0.0  8.9    0.0   24.6   0  93 c9t5000CCA221D4210Ed0
     cpu
 us sy wt id
  0  4  0 96
                    extended device statistics              
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.1    0.0    0.0    0.0  0.0  0.2    0.0 1628.5   0  16 c3d0
  393.0    9.9 19254.7   33.8  0.0 10.0    0.0   24.7   0 100 c9t5000CCA221DAD063d0
  389.3    9.8 19329.1   33.8  0.0 10.0    0.0   25.0   0 100 c9t5000CCA221DAA118d0
  405.6    9.9 19506.2   33.8  0.0  9.9    0.0   23.9   0 100 c9t5000CCA221D42148d0
  412.2    9.9 19852.8   33.6  0.0  9.4    0.0   22.2   0  95 c9t5000CCA221D6824Ad0
  377.7    9.8 16262.5   33.3  0.0  8.7    0.0   22.6   0  90 c9t5000CCA221D6F23Ad0
  399.0    9.8 19498.6   33.9  0.0 10.0    0.0   24.4   0 100 c9t5000CCA221DAA15Cd0
  391.3   10.1 16658.6   33.5  0.0  8.9    0.0   22.3   0  91 c9t5000CCA221D4204Dd0
  381.1    9.7 16234.4   33.6  0.0  8.8    0.0   22.5   0  90 c9t5000CCA221D6F22Dd0
  397.9    9.9 19163.6   33.6  0.0  9.5    0.0   23.2   0  96 c9t5000CCA221D4210Ed0
 
Hmmm...I'm telling filebench to do 1MB iosize, however, iostat says iosize is about 64K:

Filebench profile:
Code:
set $dir=/rz2pool
set $filesize=40g
set $nthreads=1
set $iosize=1m <----

define file name=largefile1,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile2,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile3,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile4,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile5,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile6,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile7,path=$dir,size=$filesize,prealloc,reuse
define file name=largefile8,path=$dir,size=$filesize,prealloc,reuse



define process name=seqread,instances=1
{
  thread name=seqread,memsize=10m,instances=$nthreads
  {
    flowop read name=seqread,filename=largefile1,iosize=$iosize
  }

....

From IO stat we're doing about 20,000KB/s (20MB/s) with about 400 read/s...thus IO size is 20000000/400 = 50,000 = 50KB

Perhaps I'm not using the proper filebench template here.

As you can see individual drives DO perform as expected with direct dd tests (130MB/s)....even when I drop the iosize down to the 64K is effectively used during the file bench test (100MB/s):

Code:
root@zulu01:/rz2pool/cytel/tools/filebench# dd if=/dev/rdsk/c9t5000CCA221D6F22Dd0 of=/dev/null bs=1M count=1000 skip=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 7.9951 s, 131 MB/s

root@zulu01:/rz2pool/cytel/tools/filebench# dd if=/dev/rdsk/c9t5000CCA221DAA118d0 of=/dev/null bs=64k count=100000 skip=10000
100000+0 records in
100000+0 records out
6553600000 bytes (6.6 GB) copied, 59.7061 s, 110 MB/s
 
Multi threaded DD tests to the raw disk (10 in parallel) confirm that the expander and HBA are working as expected (e.g. seeing about 900-1000MB/s):

Code:
 us sy wt id
  0  1  0 99
                    extended device statistics              
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
   91.6   23.2 93497.7   84.9  0.0  1.6    0.0   13.6   0  94 c9t5000CCA221DAD063d0
   91.2   22.9 92987.6   85.6  0.0  1.7    0.0   15.3   0  94 c9t5000CCA221DAA118d0
   91.5   23.5 93395.3   85.3  0.0  1.2    0.0   10.1   0  93 c9t5000CCA221D42148d0
   91.8   23.2 93499.7   84.7  0.0  1.1    0.0    9.6   0  92 c9t5000CCA221D6824Ad0
   92.2   23.2 94011.6   84.6  0.0  1.1    0.0    9.5   0  92 c9t5000CCA221D6F23Ad0
   91.7   22.9 93699.0   85.3  0.0  1.2    0.0   10.5   0  96 c9t5000CCA221DAA15Cd0
   92.1   23.1 93806.9   84.8  0.0  1.1    0.0    9.6   0  92 c9t5000CCA221D4204Dd0
   92.1   23.2 93909.1   84.1  0.0  1.1    0.0    9.6   0  93 c9t5000CCA221D6F22Dd0
   91.7   22.9 93801.3   84.4  0.0  1.0    0.0    9.1   0  90 c9t5000CCA221D4210Ed0

Even when I drop the dd iosize to 64K (to more closely emulate the testing when filebench is reading from ZFS), things look awesome:

Code:
     cpu
 us sy wt id
  0  4  0 96
                    extended device statistics              
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
 1459.7   23.2 93422.1  145.4  0.0  1.1    0.0    0.7   0  98 c9t5000CCA221DAD063d0
 1464.8   23.3 93748.5  145.6  0.0  1.3    0.0    0.9   0  98 c9t5000CCA221DAA118d0
 1460.1   23.6 93447.7  145.7  0.0  1.1    0.0    0.7   1  98 c9t5000CCA221D42148d0
 1467.0   23.4 93889.3  145.1  0.0  1.0    0.0    0.7   1  98 c9t5000CCA221D6824Ad0
 1461.2   23.2 93518.1  144.9  0.0  1.0    0.0    0.7   0  98 c9t5000CCA221D6F23Ad0
 1448.6   23.2 92711.7  145.3  0.0  1.0    0.0    0.7   0  98 c9t5000CCA221DAA15Cd0
 1453.5   22.7 93025.3  144.6  0.0  1.0    0.0    0.7   1  98 c9t5000CCA221D4204Dd0
 1445.0   23.3 92481.3  144.8  0.0  1.0    0.0    0.7   1  98 c9t5000CCA221D6F22Dd0
 1450.6   22.9 92839.7  145.1  0.0  1.0    0.0    0.7   1  98 c9t5000CCA221D4210Ed0

Look at the async svc time with dd...less than 1ms....vs. 20+ms in filebench test.

Why the heck is service time so ridiculously higher with ZFS vs. the raw disk...I guess that is the million dollar question.
 
iostat shows each drive only handling 10-20MB/s (which is nowhere near their 100-150MB/s capability) and yet iostat says each drive is 90-100% busy!? wtf?
you did say the drives are very full. this seems a bit lower than it should be but full drives do slow down a lot.
 
Back
Top