Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Jan 2018 18:09:07 +0800
From:      blubee blubeeme <gurenchan@gmail.com>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: USB stack
Message-ID:  <CALM2mEnaA7zDVfONFQEBtC2WghbRFoFW2iPpmBKohP1pd45CcQ@mail.gmail.com>
In-Reply-To: <3F9697E3-3C25-45CB-804A-9C3607E434C4@dsl-only.net>
References:  <3F9697E3-3C25-45CB-804A-9C3607E434C4@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 7, 2018 at 5:35 PM, Mark Millard <markmi@dsl-only.net> wrote:

> blubee blubeeme gurenchan at gmail.com wrote on
> Wed Jan 3 10:31:56 UTC 2018 :
>
> > Does FreeBSD current USB stack support usb >= 2.0 devices?
> >
> > Testing out the USB devices support I get about 7.2-7.8 megabytes per
> > second which seems odd.
>
>
> FreeBSD machine: Pine64+ 2GB? Ryzen Threadripper 1950X? . . .?
>
> It would help to specify the type of system and its
> relevant properties (not just the processor).
>
> What independent channels are in use? Any? Or are
> the source and destination on the same channel at
> some stage?
>
> > I transferred about 30GB of audio from laptop
>
> The 30GB was on what type of device? Plugged in to what?
> What file system?
>
ZFS file system on the main machine and the 1TB Transcend drive.
I am not 100% sure what format android device is;
I can look into this further but I've been testing on the Transcend device
linked above in this list.

>
> > to Samsung usb class 10 usb
> > device connected to LG v30.
>
> What file system?
>
Android 7.1

>
> And in another message (indicating the other direction
> of transfer compared to the above?):
>
I transfer from the phone to the computer.

>
> > I use the phone, LG V30 to record basically ungraded RAW video files to
> the
> > microsd card; they are large files.
> > I transfer them to my computer copy a backup to the 1TB driver; then do
> > edits/ color grading, etc in blender,
> > then I transfer the finished to another 1TB hdd for backup as well.
>
> So the LG v30 was plugged in as a USB device, effectively
> acting as a media reader/writer? What file system?
> (It seems unlikely that the LG v30 would use a FreeBSD
> native file system to record RAW video files.)
>
>
> Going the other direction of providing some examples
> of files copies for UFS. . .
>
> Note: These are based on head -r327485 with
> non-debug kernel builds.
>
>
> Example performance copying /usr/src/ :
> (lots of small files on a fairly low-end FreeBSD
> machine)
>
> RPi2B V1.1 (with USB 2.0)
> One USB 3.0 powered hub (USB 2.0 compatible) with both:
>
> A) USB 3.0 SSD stick (USB 2.0 compatible) with the root file system
>
> B) 64 GB eMMC on a usdcard adapter, plugged into a USB 3.0 media
>    reader/writer (USB 2.0 compatible).
>
> mount -o noatime in use for (A) and (B). UFS file systems.
> soft-updates enabled.
>
> cp -ax /usr/src/ /mnt/root/srccpy_test
>
> gstat -pd outputs, a few examples:
>
> dT: 1.007s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0    255    255   5501    1.9      0      0    0.0      0      0
> 0.0   48.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da3
>    64    426      1     32  221.4    425   6287  140.4      0      0
> 0.0   62.9| da4
>
> Note that the read kBps + write kBps means around 11MiByte/s for r+w.
> (There is only one USB connection at the RPi2B V1.1 here,
> not multiple, independent channels.)
>

This is an example copying [multiple small files] to the 1TB drive.
------------------------------------------------------------------------------------------------------------------
 L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
 ms/d   %busy Name
    0    547    290  35239    2.0      4     16   73.1    249  44291
 93.7   48.8| nvd0
    0      0      0      0    0.0      0      0    0.0      0      0
0.0    0.0| md99
   21    333      0      0    0.0    333  36040   16.2      0      0
0.0   76.2| da1
------------------------------------------------------------------------------------------------------------------


>
> dT: 1.007s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0    393    393   5295    1.3      0      0    0.0      0      0
> 0.0   50.7| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da3
>    46    102      2     64    2.9    100   2101  116.9      0      0
> 0.0   19.5| da4
>
> The above last shows a period with around 7 MiBytes/s for r+w.
>
> dT: 1.007s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>    16    245    245   9761   37.4      0      0    0.0      0      0
> 0.0   77.4| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da3
>    28    481      0      0    0.0    481  10809   95.1      0      0
> 0.0   93.7| da4
>
> That last shows a period with around 20 MiBytes/s for r+w.
> (Probably copying fewer, bigger files at the time.)
>
> This might be around 8 MiBytes/s being written (mean rate
> overall for the copy).
>
>
> Example high end machine copying /usr/src/ to
> fast USB 3.0 SSD stick over USB 3.0, all UFS
> file system based:
>
> Ryzen Threadripper 1950X
> Running FreeBSD under Hyper-V under Windows 10 Pro
> Samsung 960 Pro 1TB NVMe root root UFS file system
> USB 3.0 SSD stick (USB 2.0 compatible) on a USB 3.0 connection (UFS)
> (These are Hyper-V "Physical disk drive" bindings,
> not NTFS files used as a virtual file system.)
>
> mount -o noatime in use for both. UFS file systems.
> soft-updates.
>
> cp -ax /usr/src/ /mnt/root/srccpy_test
>
> gstat -pd outputs, a couple of examples:
>
> dT: 1.023s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0   6519   6519 103339    0.1      0      0    0.0      0      0
> 0.0   35.5| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>   676   6635      0      0    0.0   6635 119898   43.6      0      0
> 0.0   43.0| da3
>
> dT: 1.058s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0   6839   6839 106968    0.1      0      0    0.0      0      0
> 0.0   34.7| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>     1   6967      0      0    0.0   6967 133410   42.4      0      0
> 0.0   46.1| da3
>
> In this context there are 2 independent channels
> and reading from one and writing from the other
> can potentially happen at the same time.
>
> Vastly faster than 8 MiBytes/s mean rate for writes.
>
>
> Example high end machine copying /usr/src/ from
> and to fast USB 3.0 SSD sticks over USB 3.0, all
> UFS file system based:
>
> Ryzen Threadripper 1950X
> Running FreeBSD under Hyper-V under Windows 10 Pro
> USB 3.0 SSD stick (USB 2.0 compatible) on a USB 3.0 connection (UFS)
> Another USB 3.0 SSD stick (USB 2.0 compatible) on a USB 3.0 connection
> (UFS)
> (These are Hyper-V "Physical disk drive" bindings,
> not NTFS files used as a virtual file system.)
>
> mount -o noatime in use for both. UFS file systems.
> soft-updates.
>
> cp -ax /mnt/usr/src /media/root/srccpy_test
>
> gstat -pd outputs, a couple of examples:
>
> dT: 1.008s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1   2388   2388  36317    0.3      0      0    0.0      0      0
> 0.0   80.5| da3
>     0   2197      0      0    0.0   2197  38206   35.7      0      0
> 0.0   14.8| da4
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>
> dT: 1.070s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1   2443   2443  44537    0.3      0      0    0.0      0      0
> 0.0   82.5| da3
>     0   2309      0      0    0.0   2309  51142   36.0      0      0
> 0.0   18.7| da4
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>
> dT: 1.070s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     0   2664   2664  65516    0.3      0      0    0.0      0      0
> 0.0   82.8| da3
>     0   2932      0      0    0.0   2932  84290   34.5      0      0
> 0.0   32.2| da4
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>
> dT: 1.047s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1   2542   2542  28571    0.3      0      0    0.0      0      0
> 0.0   77.7| da3
>   778   1803     13    428    0.4   1789  15985   27.8      0      0
> 0.0    8.0| da4
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>
> I doubt that this has independent channels at
> all stages.
>
> Faster than 8 MiBytes/s mean rate for writes.
>
>
>
> Example high end machine copying /usr/src/ from
> and to fast USB 3.0 SSD sticks over USB 2.0, all
> UFS file system based:
>
> Ryzen Threadripper 1950X
> Running FreeBSD under Hyper-V under Windows 10 Pro
> USB 3.0 SSD stick (USB 2.0 compatible) on a USB 2.0 connection (UFS)
> Another USB 3.0 SSD stick (USB 2.0 compatible) on a USB 2.0 connection
> (UFS)
> (These are Hyper-V "Physical disk drive" bindings,
> not NTFS files used as a virtual file system.)
>
> mount -o noatime in use for both. UFS file systems.
> soft-updates.
>
> cp -ax /mnt/usr/src /media/root/srccpy_test
>
> gstat -pd outputs, a couple of examples:
>
> dT: 1.070s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1    812    812  10487    0.8      0      0    0.0      0      0
> 0.0   62.6| da3
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>     0    949      5    150   66.9    944  13853  229.0      0      0
> 0.0   48.6| da4
>
> dT: 1.042s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1   1093   1093  12903    0.7      0      0    0.0      0      0
> 0.0   71.5| da3
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>   180   1003      8    246   94.9    996   9443  242.7      0      0
> 0.0   35.9| da4
>
> dT: 1.068s  w: 1.000s
>  L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
>  ms/d   %busy Name
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| fd0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da0
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da1
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| da2
>     1    617    617  15973    1.4      0      0    0.0      0      0
> 0.0   87.4| da3
>     0      0      0      0    0.0      0      0    0.0      0      0
> 0.0    0.0| cd0
>     1   1147      2     60   49.2   1145  17220  187.0      0      0
> 0.0   78.1| da4
>
> Still solidly more than 8 MiBytes/s being written (mean rate).
>
>
> Having a few large files to copy instead should normally
> be faster in each of the earlier example contexts.
>
> But no hard drives or flash drives were involved: all SSDs of
> one form or another. Hard drive properties and file system
> fragmentation could make things much slower by comparison.
> Flash drives also can have issues.
>
> This is a larger file, not the largest but hey

 L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w    d/s   kBps
 ms/d   %busy Name
    0      4      0      0    0.0      2      8    0.0      0      0
0.0    0.1| nvd0
    0      0      0      0    0.0      0      0    0.0      0      0
0.0    0.0| md99
  128    982      1     32   58.8    981 125428  110.5      0      0
0.0  100.0| da1

===
> Mark Millard
> markmi at dsl-only.net
>
> I'm having a few issues with USB but just to simplify things;
let's focus on speed for the device that I am currently using.

Device spec:
FreeBSD blubee 12.0-CURRENT FreeBSD 12.0-CURRENT #0 r326056: Tue Nov 21
14:54:55 UTC 2017
root@releng3.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
amd64

pciconf -lv
hostb0@pci0:0:0:0: class=0x060000 card=0x6a011558 chip=0x19108086 rev=0x07
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host
Bridge/DRAM Registers'
    class      = bridge
    subclass   = HOST-PCI
pcib1@pci0:0:1:0: class=0x060400 card=0x6a011558 chip=0x19018086 rev=0x07
hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe
Controller (x16)'
    class      = bridge
    subclass   = PCI-PCI
xhci0@pci0:0:20:0: class=0x0c0330 card=0x6a011558 chip=0xa12f8086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H USB 3.0 xHCI Controller'
    class      = serial bus
    subclass   = USB
none0@pci0:0:22:0: class=0x078000 card=0x6a011558 chip=0xa13a8086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H CSME HECI'
    class      = simple comms
ahci0@pci0:0:23:0: class=0x010601 card=0x6a011558 chip=0xa1038086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H SATA Controller [AHCI mode]'
    class      = mass storage
    subclass   = SATA
pcib2@pci0:0:28:0: class=0x060400 card=0x6a011558 chip=0xa1108086 rev=0xf1
hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib3@pci0:0:28:4: class=0x060400 card=0x6a011558 chip=0xa1148086 rev=0xf1
hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib4@pci0:0:28:6: class=0x060400 card=0x6a011558 chip=0xa1168086 rev=0xf1
hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
pcib5@pci0:0:29:0: class=0x060400 card=0x6a011558 chip=0xa1188086 rev=0xf1
hdr=0x01
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H PCI Express Root Port'
    class      = bridge
    subclass   = PCI-PCI
isab0@pci0:0:31:0: class=0x060100 card=0x6a011558 chip=0xa14e8086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H LPC Controller'
    class      = bridge
    subclass   = PCI-ISA
none1@pci0:0:31:2: class=0x058000 card=0x6a011558 chip=0xa1218086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H PMC'
    class      = memory
hdac0@pci0:0:31:3: class=0x040300 card=0x6a021558 chip=0xa1708086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H HD Audio'
    class      = multimedia
    subclass   = HDA
none2@pci0:0:31:4: class=0x0c0500 card=0x6a011558 chip=0xa1238086 rev=0x31
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Sunrise Point-H SMBus'
    class      = serial bus
    subclass   = SMBus
vgapci0@pci0:1:0:0: class=0x030000 card=0x6a021558 chip=0x1ba110de rev=0xa1
hdr=0x00
    vendor     = 'NVIDIA Corporation'
    device     = 'GP104M [GeForce GTX 1070 Mobile]'
    class      = display
    subclass   = VGA
none3@pci0:109:0:0: class=0xff0000 card=0x6a011558 chip=0x528710ec rev=0x01
hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8411B PCI Express Card Reader'
re0@pci0:109:0:1: class=0x020000 card=0x6a011558 chip=0x816810ec rev=0x12
hdr=0x00
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller'
    class      = network
    subclass   = ethernet
iwm0@pci0:110:0:0: class=0x028000 card=0x50108086 chip=0x095a8086 rev=0x48
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Wireless 7265'
    class      = network
nvme0@pci0:111:0:0: class=0x010802 card=0x390a8086 chip=0xf1a58086 rev=0x03
hdr=0x00
    vendor     = 'Intel Corporation'
    class      = mass storage
    subclass   = NVM

I have the 1TB Transcend drive that I linked before [ZFS format]
I have a LG v30 with 256GB Samsung microsd.

I do not transfer to multiple USB devices at any one time.

I either transfer from phone [LG v30] to this machine;  [pciconf output
above]
Transfer from this machine to 1TB USB device for backup.

I never have two or more USB devices connected to this machine.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALM2mEnaA7zDVfONFQEBtC2WghbRFoFW2iPpmBKohP1pd45CcQ>