ZFS Recordsize tuning & transmission (bittorent daemon)

Arnaud Houdelette tzim at tzim.net
Wed May 19 08:27:10 UTC 2010


Hi,

I'm using the transmission bittorent client on a single drive ZFS pool 
(name unsafe). Downloading is mostly OK.
But moving a downloaded file to an other zpool (zraid, name tank) takes 
ages.

The pools :
[carenath] ~> zpool status
   pool: tank
  state: ONLINE
  scrub: none requested
config:

         NAME                                            STATE     READ 
WRITE CKSUM
         tank                                            ONLINE       
0     0     0
           raidz1                                        ONLINE       
0     0     0
             gptid/ffb4e96a-d497-11de-96bd-001d923bc7a0  ONLINE       
0     0     0
             gptid/9fb111f8-d426-11de-99bc-001d923bc7a0  ONLINE       
0     0     0
             gptid/0902db4e-d462-11de-96bd-001d923bc7a0  ONLINE       
0     0     0
             gptid/e3838ce5-d4ed-11de-96bd-001d923bc7a0  ONLINE       
0     0     0

errors: No known data errors

   pool: unsafe
  state: ONLINE
  scrub: none requested
config:

         NAME        STATE     READ WRITE CKSUM
         unsafe      ONLINE       0     0     0
           ad0p3     ONLINE       0     0     0

errors: No known data errors


zpool iostat during the move shows :
  zpool iostat 5
                capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
tank        2.65T  77.7G      6      8  9.65K   346K
unsafe      28.4G   118G     14     10  1.77M   214K
----------  -----  -----  -----  -----  -----  -----
tank        2.65T  77.7G     88      0   131K      0
unsafe      28.4G   118G     76     11  9.28M   114K
----------  -----  -----  -----  -----  -----  -----
tank        2.65T  77.7G    102     46   147K  2.53M
unsafe      28.4G   118G     79      6  9.81M  34.0K
----------  -----  -----  -----  -----  -----  -----
tank        2.65T  77.6G      2     42  4.30K  2.08M
unsafe      28.4G   118G     81      3  10.1M   173K
----------  -----  -----  -----  -----  -----  -----

Why is there 10MB reads on source pool where only ~3MB are written on 
destination ?

ZFS recordsize on both pools are default (128k). But as transmission 
bittorrent client has no write (nor read) cache, it could mean that data 
is written is smaller chunks during download. Could this lead to data 
being stored in many not-full records ? Does those unfull records would 
have to be read as whole (128k) during the move, which would explain the 
above difference on read/write ?

I'm just making assumptions here, as my understanding of internals of 
ZFS is limited. Some insights would be appreciated.

Thanks.

Arnaud Houdelette


More information about the freebsd-fs mailing list