[DragonFlyBSD - Bug #1527] extremely bad USB/msdos performance

Venkatesh Srinivas via Redmine bugtracker-admin at leaf.dragonflybsd.org
Mon Mar 26 10:54:55 PDT 2012


Issue #1527 has been updated by Venkatesh Srinivas.

Description updated
Assignee changed from 0 to Venkatesh Srinivas

Confirm w/ umass on latest master.

Possible leads:
1) msdosfs does not implement runahead/behind support in BMAP, so cluster_read/cluster_write don't get a chance to cluster. FreeBSD has some changes that will help in this regard.

2) NetBSD PR/34583 has a patch to track file-end position, avoiding some chain traversals. Helps w/ write performance on long files.

3) now that device vnodes can implement cluster operations and cluster_awrite is available, msdosfs could set B_CLUSTEROK on metadata writes to devvp.

4) For a more out-there patch, msdosfs could implement double-buffering on writes; the write path would allocate a new buffer, copy data in to it, and mark it as clusterable. The new buffer would be along the device vnode rather than the file vnode. This'll allow all data&metadata to cluster, regardless of file length limits. Would incur copying costs.
(This'd be similar to HAMMER's double_buffer mode, except reflected into writes rather than reads).

5) umass may be limiting maximum clustering. This should be investigated -- in my test on master, 4KB writes seemed to be the max. 


----------------------------------------
Bug #1527: extremely bad USB/msdos performance
http://bugs.dragonflybsd.org/issues/1527

Author: Simon 'corecode' Schubert
Status: New
Priority: Normal
Assignee: Venkatesh Srinivas
Category: 
Target version: 


The performance for writing to msdosfs on an ehci usb device is 
pathetic.  I'm getting ~500KB/sec, while other OS can do at least 6MB.

the rsync process is most of the time in "iowait", "biows", "biord".

vmstat:
  tin tout  KB/t tps   MB/s   KB/t tps   MB/s   KB/t tps   MB/s  us ni 
sy in id
    8  680 60.86   56  3.33   0.00    0  0.00  10.00    2  0.02   3  0 
5  0 93
    7  400 64.00    2  0.12   0.00    0  0.00  16.00    1  0.02   1  0 
5  0 94
   10  415 64.00    2  0.12   0.00    0  0.00   0.00    0  0.00   3  0 
5  0 92
    9  528  0.00    0  0.00   0.00    0  0.00  16.00    2  0.03   2  0 
3  0 95
    9  541 64.00    4  0.25   0.00    0  0.00  16.00   86  1.34   2  0 
6  0 92
   10  399  0.00    0  0.00   0.00    0  0.00  16.00  138  2.16   4  0 
6  0 90
    8  546 64.00    2  0.12   0.00    0  0.00  16.00    4  0.06   7  0 
8  0 85
    7  509 37.75   89  3.28   0.00    0  0.00  15.68   37  0.57   3  0 
8  0 89
   10  545  0.00    0  0.00   0.00    0  0.00  16.00  131  2.05   3  0 
8  0 89
    1  104  4.00    1  0.00   0.00    0  0.00  16.00   40  0.62   5  0 
7  0 87
    2  226 48.00   86  4.03   0.00    0  0.00  14.29    7  0.10   4  0 
6  0 90
  102  100 64.00    2  0.12   0.00    0  0.00  16.00  110  1.72   2  0 
5  0 93
  126  102 64.00    2  0.12   0.00    0  0.00  16.00   37  0.58   3  0 
6  0 91
   72  103 64.00    1  0.06   0.00    0  0.00  13.29  124  1.61   0  0 
4  0 95
   42   98 64.00    1  0.06   0.00    0  0.00   0.00    0  0.00   1  0 
3  0 96
  176  225 45.40   86  3.81   0.00    0  0.00  16.00    2  0.03   4  0 
6  0 90
  136  104 19.43   84  1.59   0.00    0  0.00  16.00   11  0.17   7  0 
8  0 85
   70  121  0.00    0  0.00   0.00    0  0.00  16.00   26  0.41   1  0 
10  0 89
   26  100 64.00    5  0.31   0.00    0  0.00  16.00  140  2.19   2  0 
5  0 93
    2  219 56.79   91  5.05   0.00    0  0.00  15.79   58  0.89   3  0 
6  0 91


-- 
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account





More information about the Bugs mailing list