Robert Milkowski writes:

 > Hello Roch,
 > 
 > Saturday, June 28, 2008, 11:25:17 AM, you wrote:
 > 
 > 
 > RB> I suspect,  a single dd is cpu bound.
 > 
 > I don't think so.
 > 

We're nearly so as you show. More below.

 > Se below one with a stripe of 48x disks again. Single dd with 1024k
 > block size and 64GB to write.
 > 
 > bash-3.2# zpool iostat 1
 >                capacity     operations    bandwidth
 > pool         used  avail   read  write   read  write
 > ----------  -----  -----  -----  -----  -----  -----
 > test         333K  21.7T      1      1   147K   147K
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0      0      0      0
 > test         333K  21.7T      0  1.60K      0   204M
 > test         333K  21.7T      0  20.5K      0  2.55G
 > test        4.00G  21.7T      0  9.19K      0  1.13G
 > test        4.00G  21.7T      0      0      0      0
 > test        4.00G  21.7T      0  1.78K      0   228M
 > test        4.00G  21.7T      0  12.5K      0  1.55G
 > test        7.99G  21.7T      0  16.2K      0  2.01G
 > test        7.99G  21.7T      0      0      0      0
 > test        7.99G  21.7T      0  13.4K      0  1.68G
 > test        12.0G  21.7T      0  4.31K      0   530M
 > test        12.0G  21.7T      0      0      0      0
 > test        12.0G  21.7T      0  6.91K      0   882M
 > test        12.0G  21.7T      0  21.8K      0  2.72G
 > test        16.0G  21.7T      0    839      0  88.4M
 > test        16.0G  21.7T      0      0      0      0
 > test        16.0G  21.7T      0  4.42K      0   565M
 > test        16.0G  21.7T      0  18.5K      0  2.31G
 > test        20.0G  21.7T      0  8.87K      0  1.10G
 > test        20.0G  21.7T      0      0      0      0
 > test        20.0G  21.7T      0  12.2K      0  1.52G
 > test        24.0G  21.7T      0  9.28K      0  1.14G
 > test        24.0G  21.7T      0      0      0      0
 > test        24.0G  21.7T      0      0      0      0
 > test        24.0G  21.7T      0      0      0      0
 > test        24.0G  21.7T      0  14.5K      0  1.81G
 > test        28.0G  21.7T      0  10.1K  63.6K  1.25G
 > test        28.0G  21.7T      0      0      0      0
 > test        28.0G  21.7T      0  10.7K      0  1.34G
 > test        32.0G  21.7T      0  13.6K  63.2K  1.69G
 > test        32.0G  21.7T      0      0      0      0
 > test        32.0G  21.7T      0      0      0      0
 > test        32.0G  21.7T      0  11.1K      0  1.39G
 > test        36.0G  21.7T      0  19.9K      0  2.48G
 > test        36.0G  21.7T      0      0      0      0
 > test        36.0G  21.7T      0      0      0      0
 > test        36.0G  21.7T      0  17.7K      0  2.21G
 > test        40.0G  21.7T      0  5.42K  63.1K   680M
 > test        40.0G  21.7T      0      0      0      0
 > test        40.0G  21.7T      0  6.62K      0   844M
 > test        44.0G  21.7T      1  19.8K   125K  2.46G
 > test        44.0G  21.7T      0      0      0      0
 > test        44.0G  21.7T      0      0      0      0
 > test        44.0G  21.7T      0  18.0K      0  2.24G
 > test        47.9G  21.7T      1  13.2K   127K  1.63G
 > test        47.9G  21.7T      0      0      0      0
 > test        47.9G  21.7T      0      0      0      0
 > test        47.9G  21.7T      0  15.6K      0  1.94G
 > test        47.9G  21.7T      1  16.1K   126K  1.99G
 > test        51.9G  21.7T      0      0      0      0
 > test        51.9G  21.7T      0      0      0      0
 > test        51.9G  21.7T      0  14.2K      0  1.77G
 > test        55.9G  21.7T      0  14.0K  63.2K  1.73G
 > test        55.9G  21.7T      0      0      0      0
 > test        55.9G  21.7T      0      0      0      0
 > test        55.9G  21.7T      0  16.3K      0  2.04G
 > test        59.9G  21.7T      0  14.5K  63.2K  1.80G
 > test        59.9G  21.7T      0      0      0      0
 > test        59.9G  21.7T      0      0      0      0
 > test        59.9G  21.7T      0  17.7K      0  2.21G
 > test        63.9G  21.7T      0  4.84K  62.6K   603M
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > test        63.9G  21.7T      0      0      0      0
 > ^C
 > bash-3.2#
 > 
 > bash-3.2# ptime dd if=/dev/zero of=/test/q1 bs=1024k count=65536
 > 65536+0 records in
 > 65536+0 records out
 > 
 > real     1:06.312
 > user        0.074
 > sys        54.060
 > bash-3.2#
 > 
 > Doesn't look like it's CPU bound.
 > 

So if sys we're at 81%  of CPU saturation. If you make this
100% you will still have zeros in the zpool iostat.

We might be waiting on memory pages and a few other locks.


 > 
 > 
 > Let's try to read the file after zpool export test; zpool import test
 > 
 > bash-3.2# zpool iostat 1
 >                capacity     operations    bandwidth
 > pool         used  avail   read  write   read  write
 > ----------  -----  -----  -----  -----  -----  -----
 > test        64.0G  21.7T     15     46  1.22M  1.76M
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T  6.64K      0   849M      0
 > test        64.0G  21.7T  10.2K      0  1.27G      0
 > test        64.0G  21.7T  10.7K      0  1.33G      0
 > test        64.0G  21.7T  9.91K      0  1.24G      0
 > test        64.0G  21.7T  10.1K      0  1.27G      0
 > test        64.0G  21.7T  10.7K      0  1.33G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.2K      0  1.27G      0
 > test        64.0G  21.7T  10.3K      0  1.29G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  9.16K      0  1.14G      0
 > test        64.0G  21.7T  1.98K      0   253M      0
 > test        64.0G  21.7T  2.48K      0   317M      0
 > test        64.0G  21.7T  1.98K      0   253M      0
 > test        64.0G  21.7T  1.98K      0   254M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.73K      0   221M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.49K      0   191M      0
 > test        64.0G  21.7T  2.47K      0   317M      0
 > test        64.0G  21.7T  1.46K      0   186M      0
 > test        64.0G  21.7T  2.01K      0   258M      0
 > test        64.0G  21.7T  1.98K      0   254M      0
 > test        64.0G  21.7T  1.97K      0   253M      0
 > test        64.0G  21.7T  2.23K      0   286M      0
 > test        64.0G  21.7T  1.98K      0   254M      0
 > test        64.0G  21.7T  1.73K      0   221M      0
 > test        64.0G  21.7T  1.98K      0   254M      0
 > test        64.0G  21.7T  2.42K      0   310M      0
 > test        64.0G  21.7T  1.78K      0   228M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.67K      0   214M      0
 > test        64.0G  21.7T  1.80K      0   230M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  2.47K      0   317M      0
 > test        64.0G  21.7T  1.73K      0   221M      0
 > test        64.0G  21.7T  1.99K      0   254M      0
 > test        64.0G  21.7T  1.24K      0   159M      0
 > test        64.0G  21.7T  2.47K      0   316M      0
 > test        64.0G  21.7T  2.47K      0   317M      0
 > test        64.0G  21.7T  1.99K      0   254M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.73K      0   221M      0
 > test        64.0G  21.7T  2.48K      0   317M      0
 > test        64.0G  21.7T  2.48K      0   317M      0
 > test        64.0G  21.7T  1.49K      0   190M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.81K      0   232M      0
 > test        64.0G  21.7T  1.90K      0   243M      0
 > test        64.0G  21.7T  2.48K      0   317M      0
 > test        64.0G  21.7T  1.49K      0   191M      0
 > test        64.0G  21.7T  2.47K      0   317M      0
 > test        64.0G  21.7T  1.99K      0   254M      0
 > test        64.0G  21.7T  1.97K      0   253M      0
 > test        64.0G  21.7T  1.49K      0   190M      0
 > test        64.0G  21.7T  2.23K      0   286M      0
 > test        64.0G  21.7T  1.82K      0   232M      0
 > test        64.0G  21.7T  2.15K      0   275M      0
 > test        64.0G  21.7T  2.22K      0   285M      0
 > test        64.0G  21.7T  1.73K      0   222M      0
 > test        64.0G  21.7T  2.23K      0   286M      0
 > test        64.0G  21.7T  1.90K      0   244M      0
 > test        64.0G  21.7T  1.81K      0   231M      0
 > test        64.0G  21.7T  2.23K      0   285M      0
 > test        64.0G  21.7T  1.97K      0   252M      0
 > test        64.0G  21.7T  2.00K      0   255M      0
 > test        64.0G  21.7T  8.42K      0  1.05G      0
 > test        64.0G  21.7T  10.3K      0  1.29G      0
 > test        64.0G  21.7T  10.2K      0  1.28G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.2K      0  1.27G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.6K      0  1.32G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  9.23K      0  1.15G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  10.0K      0  1.25G      0
 > test        64.0G  21.7T  9.55K      0  1.19G      0
 > test        64.0G  21.7T  10.2K      0  1.27G      0
 > test        64.0G  21.7T  10.0K      0  1.25G      0
 > test        64.0G  21.7T  9.91K      0  1.24G      0
 > test        64.0G  21.7T  10.6K      0  1.32G      0
 > test        64.0G  21.7T  9.24K      0  1.15G      0
 > test        64.0G  21.7T  10.1K      0  1.26G      0
 > test        64.0G  21.7T  10.3K      0  1.29G      0
 > test        64.0G  21.7T  10.3K      0  1.29G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  8.54K      0  1.07G      0
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T      0      0      0      0
 > ^C
 > 
 > bash-3.2# ptime dd if=/test/q1 of=/dev/null bs=1024k
 > 65536+0 records in
 > 65536+0 records out
 > 
 > real     1:36.732
 > user        0.046
 > sys        48.069
 > bash-3.2#
 > 
 > 
 > Well, that drop for several dozen seconds was interesting...
 > Lets run it again without export/import:
 > 
 > bash-3.2# zpool iostat 1
 >                capacity     operations    bandwidth
 > pool         used  avail   read  write   read  write
 > ----------  -----  -----  -----  -----  -----  -----
 > test        64.0G  21.7T  3.00K      6   384M   271K
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T  2.58K      0   330M      0
 > test        64.0G  21.7T  6.02K      0   771M      0
 > test        64.0G  21.7T  8.37K      0  1.05G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  9.64K      0  1.20G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  10.6K      0  1.32G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  9.65K      0  1.21G      0
 > test        64.0G  21.7T  9.84K      0  1.23G      0
 > test        64.0G  21.7T  9.22K      0  1.15G      0
 > test        64.0G  21.7T  10.9K      0  1.36G      0
 > test        64.0G  21.7T  10.9K      0  1.36G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.7K      0  1.34G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.9K      0  1.36G      0
 > test        64.0G  21.7T  10.6K      0  1.32G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.7K      0  1.34G      0
 > test        64.0G  21.7T  10.5K      0  1.32G      0
 > test        64.0G  21.7T  10.6K      0  1.32G      0
 > test        64.0G  21.7T  10.8K      0  1.34G      0
 > test        64.0G  21.7T  10.4K      0  1.29G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  9.15K      0  1.14G      0
 > test        64.0G  21.7T  10.8K      0  1.35G      0
 > test        64.0G  21.7T  9.76K      0  1.22G      0
 > test        64.0G  21.7T  8.67K      0  1.08G      0
 > test        64.0G  21.7T  10.8K      0  1.36G      0
 > test        64.0G  21.7T  10.9K      0  1.36G      0
 > test        64.0G  21.7T  10.3K      0  1.28G      0
 > test        64.0G  21.7T  9.76K      0  1.22G      0
 > test        64.0G  21.7T  10.5K      0  1.31G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  9.23K      0  1.15G      0
 > test        64.0G  21.7T  9.63K      0  1.20G      0
 > test        64.0G  21.7T  9.79K      0  1.22G      0
 > test        64.0G  21.7T  10.2K      0  1.28G      0
 > test        64.0G  21.7T  10.4K      0  1.30G      0
 > test        64.0G  21.7T  10.3K      0  1.29G      0
 > test        64.0G  21.7T  10.2K      0  1.28G      0
 > test        64.0G  21.7T  10.6K      0  1.33G      0
 > test        64.0G  21.7T  10.8K      0  1.35G      0
 > test        64.0G  21.7T  10.5K      0  1.32G      0
 > test        64.0G  21.7T  11.0K      0  1.37G      0
 > test        64.0G  21.7T  10.2K      0  1.27G      0
 > test        64.0G  21.7T  9.69K      0  1.21G      0
 > test        64.0G  21.7T  6.07K      0   777M      0
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T      0      0      0      0
 > test        64.0G  21.7T      0      0      0      0
 > ^C
 > bash-3.2#
 > 
 > bash-3.2# ptime dd if=/test/q1 of=/dev/null bs=1024k
 > 65536+0 records in
 > 65536+0 records out
 > 
 > real       50.521
 > user        0.043
 > sys        48.971
 > bash-3.2#
 > 
 > Now looks like reading from the pool using single dd is actually CPU
 > bound.
 > 
 > Reading the same file again and again does produce, more or less,
 > consistent timing. However every time I export/import the pool during
 > the first read there is that drop in throughput during first read and
 > total time increases to almost 100 seconds.... some meta-data? (of
 > course there are no errors oof any sort, etc.)
 > 
 > 

That might fall in either of these buckets.

        6412053 zfetch needs some love
        6579975 dnode_new_blkid should check before it locks



 > 
 > 
 > 
 > 
 > >> Reducing zfs_txg_synctime to 1 helps a little bit but still it's not
 > >> even stream of data.
 > >>
 > >> If I start 3 dd streams at the same time then it is slightly better
 > >> (zfs_txg_synctime set back to 5) but still very jumpy.
 > >>
 > 
 > RB> Try zfs_txg_synctime to 10; that reduces the txg overhead.
 > 
 > 

You need multiple dd; we're basically  CPU bound here.  With
multiple dd and zfs_txg_synctime   to 10 you will  have more
write  throughput.  The  drops  you   will have  then   will
correspond to   the   metadata  updates phase   during   the
transaction group.

But the drops below correspond to txg going faster (memory
to disk) than dd is able to fill memory (some of that speed
governed by suboptimal locking).


-r

 > Doesn't help...
 > 
 > [...]
 > test        13.6G  21.7T      0      0      0      0
 > test        13.6G  21.7T      0  8.46K      0  1.05G
 > test        17.6G  21.7T      0  19.3K      0  2.40G
 > test        17.6G  21.7T      0      0      0      0
 > test        17.6G  21.7T      0      0      0      0
 > test        17.6G  21.7T      0  8.04K      0  1022M
 > test        17.6G  21.7T      0  20.2K      0  2.51G
 > test        21.6G  21.7T      0     76      0   249K
 > test        21.6G  21.7T      0      0      0      0
 > test        21.6G  21.7T      0      0      0      0
 > test        21.6G  21.7T      0  10.1K      0  1.25G
 > test        25.6G  21.7T      0  18.6K      0  2.31G
 > test        25.6G  21.7T      0      0      0      0
 > test        25.6G  21.7T      0      0      0      0
 > test        25.6G  21.7T      0  6.34K      0   810M
 > test        25.6G  21.7T      0  19.9K      0  2.48G
 > test        29.6G  21.7T      0     88  63.2K   354K
 > [...]
 > 
 > bash-3.2# ptime dd if=/dev/zero of=/test/q1 bs=1024k count=65536
 > 65536+0 records in
 > 65536+0 records out
 > 
 > real     1:10.074
 > user        0.074
 > sys        52.250
 > bash-3.2#
 > 
 > 
 > Increasing it even further (up-to 32s) doesn't help either.
 > 
 > However lowering it to 1s gives:
 > 
 > [...]
 > test        2.43G  21.7T      0  8.62K      0  1.07G
 > test        4.46G  21.7T      0  7.23K      0   912M
 > test        4.46G  21.7T      0    624      0  77.9M
 > test        6.66G  21.7T      0  10.7K      0  1.33G
 > test        6.66G  21.7T      0  6.66K      0   850M
 > test        8.86G  21.7T      0  10.6K      0  1.31G
 > test        8.86G  21.7T      0  1.96K      0   251M
 > test        11.2G  21.7T      0  16.5K      0  2.04G
 > test        11.2G  21.7T      0      0      0      0
 > test        11.2G  21.7T      0  18.6K      0  2.31G
 > test        13.5G  21.7T      0     11      0  11.9K
 > test        13.5G  21.7T      0  2.60K      0   332M
 > test        13.5G  21.7T      0  19.1K      0  2.37G
 > test        16.3G  21.7T      0     11      0  11.9K
 > test        16.3G  21.7T      0  9.61K      0  1.20G
 > test        18.4G  21.7T      0  7.41K      0   936M
 > test        18.4G  21.7T      0  11.6K      0  1.45G
 > test        20.3G  21.7T      0  3.26K      0   407M
 > test        20.3G  21.7T      0  7.66K      0   977M
 > test        22.5G  21.7T      0  7.62K      0   963M
 > test        22.5G  21.7T      0  6.86K      0   875M
 > test        24.5G  21.7T      0  8.41K      0  1.04G
 > test        24.5G  21.7T      0  10.4K      0  1.30G
 > test        26.5G  21.7T      1  2.19K   127K   270M
 > test        26.5G  21.7T      0      0      0      0
 > test        26.5G  21.7T      0  4.56K      0   584M
 > test        28.5G  21.7T      0  11.5K      0  1.42G
 > [...]
 > 
 > bash-3.2# ptime dd if=/dev/zero of=/test/q1 bs=1024k count=65536
 > 65536+0 records in
 > 65536+0 records out
 > 
 > real     1:09.541
 > user        0.072
 > sys        53.421
 > bash-3.2#
 > 
 > 
 > 
 > Looks slightly less jumpy but the total real time is about the same so
 > average throughput is actually the same (about 1GB/s).
 > 
 > 
 > 
 > 
 > >> Reading with one dd produces steady throghput but I'm disapointed with
 > >> actual performance:
 > >>
 > 
 > RB> Again, probably cpu bound. What's "ptime dd..." saying ?
 > 
 > You were right here. Reading with single dd seems to be cpu bound.
 > However multiple streams for reading do not seem to increase
 > performance considerably.
 > 
 > Nevertheless the main issu is jumpy writing...
 > 
 > 
 > 
 > 
 > -- 
 > Best regards,
 >  Robert Milkowski                            mailto:[EMAIL PROTECTED]
 >                                        http://milek.blogspot.com
 > 

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to