Skip to content

AtomicPi - USB3

AtomicPi
  • Nachdem mein passiver USB3-Hub jetzt eingetroffen ist, mal ein Kurztest.

    Software

    • Debian Buster LXDE (alles aktuell)

    Kernel

    atomicpi@atomicpi:~$ uname -a
    Linux atomicpi 4.19.16-dli #20190221T111002Z SMP Thu Feb 21 11:21:31 UTC 2019 x86_64 GNU/Linux
    

    Hardware

    • AtomicPi
    • passiver USB3-Hub (Anker)
    • externes 2,5Zoll Gehäuse
    • SSD 750 EVO 120G

    externes USB-Gehäuse 1

    556:[    4.952802] usb 2-1.4: New USB device found, idVendor=4971, idProduct=8017, bcdDevice=81.04
    557:[    4.952818] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    558:[    4.952830] usb 2-1.4: Product: USB to ATA/ATAPI Bridge
    559:[    4.952838] usb 2-1.4: Manufacturer: JMicron
    560:[    4.952847] usb 2-1.4: SerialNumber: 111122223333
    

    externer USB-Adapter 2

    556:[    4.984267] usb 2-1.4: New USB device found, idVendor=152d, idProduct=0578, bcdDevice= 1.00
    557:[    4.984281] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    558:[    4.984292] usb 2-1.4: Product: USB to ATA/ATAPI Bridge
    559:[    4.984301] usb 2-1.4: Manufacturer: JMicron
    560:[    4.984309] usb 2-1.4: SerialNumber: 0123456789ABCDEF
    

    Test Nr.1

    atomicpi@atomicpi:~$ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    4096+0 Datensätze ein
    4096+0 Datensätze aus
    4294967296 bytes (4,3 GB, 4,0 GiB) copied, 34,7662 s, 124 MB/s
    

    Test Nr.2

    atomicpi@atomicpi:~$ sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    4096+0 Datensätze ein
    4096+0 Datensätze aus
    4294967296 bytes (4,3 GB, 4,0 GiB) copied, 32,5677 s, 132 MB/s
    

    Fazit

    Zur Erinnerung, mit einem USB2.0 Hub erreichte ich 34,8 MB/s. Bootvorgang
    Also, ca. 4 mal schneller als USB2.0. Meine Hardware ist nicht die Beste, theoretisch müsste da deutlich mehr gehen. 300 MB/s sollte die theoretische Nutz-Datenrate sein.
    https://de.wikipedia.org/wiki/Universal_Serial_Bus

  • Auf meiner aktuellen Debian Buster Installation erreiche ich jetzt 203 MB/s.

    root@debian:/home/frank# dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    4096+0 Datensätze ein
    4096+0 Datensätze aus
    4294967296 bytes (4,3 GB, 4,0 GiB) copied, 21,1178 s, 203 MB/s
    
  • @FrankM sagte in AtomicPi - USB3:

    Auf meiner aktuellen Debian Buster Installation erreiche ich jetzt 203 MB/s.

    root@debian:/home/frank# dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync
    4096+0 Datensätze ein
    4096+0 Datensätze aus
    4294967296 bytes (4,3 GB, 4,0 GiB) copied, 21,1178 s, 203 MB/s
    

    Wenn das mit einer EVO750 mit 120 GB gemacht wurde, dann ist der Test leider relativ aussagelos, weil diese Samsung SSDs TurboWrite spielen und der Durchsatz nach n GB massiv einbricht (meine 750er EVO krebst dann bei nur noch 60 MB/s rum, wenn ich nicht richtig erinnere).

    Kannst Du mal mit 16 MB blocksize und nur 1 GB testen bitte? Also

    dd if=/dev/zero of=sd.img bs=16M count=64 conv=fdatasync
    iozone -e -I -a -s 512M -r 16384k -i 0 -i 1
    

    (das zweite ist besser, weil testet beide Richtungen). Spannend wäre noch Ausgabe von /proc/interrupts vor und nach dem Benchmark.

  • @tkaiser Ich habe mittlerweile eine andere SSD dran. Und zwar eine SanDisk Ultra 3D mit 1TB. Kann das aber auch gerne nochmal mit der anderen irgendwann testen 😉

    /proc/interrupts

                CPU0       CPU1       CPU2       CPU3
       0:         31          0          0          0   IO-APIC    2-edge      timer
       4:          0          0        733          0   IO-APIC    4-edge      ttyS0
       8:          0          0          0          0   IO-APIC    8-fasteoi   rtc0
       9:          0          0          0          0   IO-APIC    9-fasteoi   acpi, INT0002
      32:          0          0          0          0   IO-APIC   32-fasteoi   808622C1:00
      33:          0          0          0          0   IO-APIC   33-fasteoi   808622C1:01
      34:          0          0          0          0   IO-APIC   34-fasteoi   808622C1:02
      36:          0          0          0          0   IO-APIC   36-fasteoi   808622C1:04
      37:          0          0          0          0   IO-APIC   37-fasteoi   808622C1:05
      38:          0          2          0          0   IO-APIC   38-fasteoi   808622C1:06
      42:          0          0          0          0   IO-APIC   42-fasteoi   dw:dmac-1
      43:          0          0          0          0   IO-APIC   43-fasteoi   dw:dmac-1
      45:          0          0          0       1714   IO-APIC   45-fasteoi   mmc0
      46:         52          0          0          0   IO-APIC   46-fasteoi   mmc1
      89:          0          0          0          0   IO-APIC   89-fasteoi   8086228E:01
     115:          0          0          0          0   PCI-MSI 458752-edge      PCIe PME
     116:          0          0          0          0  chv-gpio   15  intel_soc_pmic_chtdc_ti
     123:          0          0       5422          0   PCI-MSI 524288-edge      eth0
     124:          0     131861          0          0   PCI-MSI 327680-edge      xhci_hcd
     125:          0          0       1599          0   PCI-MSI 32768-edge      i915
     126:          0          0          0          0  hdmi_lpe_audio_irqchip     -hdmi_lpe_audio_irq_handler  hdmi-lpe-audio
     127:          0          0          0          0  INT0002 Virtual GPIO    2  ACPI:Event
     NMI:          2          2          1          1   Non-maskable interrupts
     LOC:       9203      11734       8709       7890   Local timer interrupts
     SPU:          0          0          0          0   Spurious interrupts
     PMI:          2          2          1          1   Performance monitoring interrupts
     IWI:          1          0         48          0   IRQ work interrupts
     RTR:          0          0          0          0   APIC ICR read retries
     RES:       3952       2242       3312       4006   Rescheduling interrupts
     CAL:       2979       2131       6069       5414   Function call interrupts
     TLB:        222        128        120         99   TLB shootdowns
     TRM:          0          0          0          0   Thermal event interrupts
     THR:          0          0          0          0   Threshold APIC interrupts
     DFR:          0          0          0          0   Deferred Error APIC interrupts
     MCE:          0          0          0          0   Machine check exceptions
     MCP:          1          1          1          1   Machine check polls
     HYP:          0          0          0          0   Hypervisor callback interrupts
     HRE:          0          0          0          0   Hyper-V reenlightenment interrupts
     HVS:          0          0          0          0   Hyper-V stimer0 interrupts
     ERR:          0
     MIS:          0
     PIN:          0          0          0          0   Posted-interrupt notification event
     NPI:          0          0          0          0   Nested posted-interrupt event
     PIW:          0          0          0          0   Posted-interrupt wakeup event
    

    iozone

    root@debian:/home/frank# iozone -e -I -a -s 512M -r 16384k -i 0 -i 1
    Iozone: Performance Test of File I/O
            Version $Revision: 3.429 $
    	Compiled for 64 bit mode.
    	Build: linux-AMD64 
    
    Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
                 Al Slater, Scott Rhine, Mike Wisner, Ken Goss
                 Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
                 Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
                 Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
                 Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
                 Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
                 Vangel Bojaxhi, Ben England, Vikentsi Lapa.
    
    Run began: Sat May 11 14:33:01 2019
    
    Include fsync in write timing
    O_DIRECT feature enabled
    Auto Mode
    File size set to 524288 kB
    Record Size 16384 kB
    Command line used: iozone -e -I -a -s 512M -r 16384k -i 0 -i 1
    Output is in kBytes/sec
    Time Resolution = 0.000001 seconds.
    Processor cache size set to 1024 kBytes.
    Processor cache line size set to 32 bytes.
    File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride                                    
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          524288   16384   426033   430676   373225   430983                                                                          
    
    iozone test complete.
    

    /proc/interrupts

                CPU0       CPU1       CPU2       CPU3
       0:         31          0          0          0   IO-APIC    2-edge      timer
       4:          0          0        733          0   IO-APIC    4-edge      ttyS0
       8:          0          0          0          0   IO-APIC    8-fasteoi   rtc0
       9:          0          0          0          0   IO-APIC    9-fasteoi   acpi, INT0002
      32:          0          0          0          0   IO-APIC   32-fasteoi   808622C1:00
      33:          0          0          0          0   IO-APIC   33-fasteoi   808622C1:01
      34:          0          0          0          0   IO-APIC   34-fasteoi   808622C1:02
      36:          0          0          0          0   IO-APIC   36-fasteoi   808622C1:04
      37:          0          0          0          0   IO-APIC   37-fasteoi   808622C1:05
      38:          0          2          0          0   IO-APIC   38-fasteoi   808622C1:06
      42:          0          0          0          0   IO-APIC   42-fasteoi   dw:dmac-1
      43:          0          0          0          0   IO-APIC   43-fasteoi   dw:dmac-1
      45:          0          0          0       1714   IO-APIC   45-fasteoi   mmc0
      46:         52          0          0          0   IO-APIC   46-fasteoi   mmc1
      89:          0          0          0          0   IO-APIC   89-fasteoi   8086228E:01
     115:          0          0          0          0   PCI-MSI 458752-edge      PCIe PME
     116:          0          0          0          0  chv-gpio   15  intel_soc_pmic_chtdc_ti
     123:          0          0       5748          0   PCI-MSI 524288-edge      eth0
     124:          0     150512          0          0   PCI-MSI 327680-edge      xhci_hcd
     125:          0          0       3245          0   PCI-MSI 32768-edge      i915
     126:          0          0          0          0  hdmi_lpe_audio_irqchip     -hdmi_lpe_audio_irq_handler  hdmi-lpe-audio
     127:          0          0          0          0  INT0002 Virtual GPIO    2  ACPI:Event
     NMI:          2          2          2          1   Non-maskable interrupts
     LOC:      11174      13389      13014       9952   Local timer interrupts
     SPU:          0          0          0          0   Spurious interrupts
     PMI:          2          2          2          1   Performance monitoring interrupts
     IWI:          1          0        294          0   IRQ work interrupts
     RTR:          0          0          0          0   APIC ICR read retries
     RES:       4304       2485       3460       4075   Rescheduling interrupts
     CAL:       3232       2375      10793       5748   Function call interrupts
     TLB:        236        136        147        131   TLB shootdowns
     TRM:          0          0          0          0   Thermal event interrupts
     THR:          0          0          0          0   Threshold APIC interrupts
     DFR:          0          0          0          0   Deferred Error APIC interrupts
     MCE:          0          0          0          0   Machine check exceptions
     MCP:          2          2          2          2   Machine check polls
     HYP:          0          0          0          0   Hypervisor callback interrupts
     HRE:          0          0          0          0   Hyper-V reenlightenment interrupts
     HVS:          0          0          0          0   Hyper-V stimer0 interrupts
     ERR:          0
     MIS:          0
     PIN:          0          0          0          0   Posted-interrupt notification event
     NPI:          0          0          0          0   Nested posted-interrupt event
     PIW:          0          0          0          0   Posted-interrupt wakeup event
    

    Und hier der andere Test

    frank@debian:~$ dd if=/dev/zero of=sd.img bs=16M count=64 conv=fdatasync
    64+0 Datensätze ein
    64+0 Datensätze aus
    1073741824 bytes (1,1 GB, 1,0 GiB) copied, 3,98859 s, 269 MB/s
    
  • @FrankM sagte in AtomicPi - USB3:

          kB  reclen    write  rewrite    read    reread
      524288   16384   426033   430676   373225   430983
    

    Danke für den Test. Das sieht doch sogar sehr sehr gut aus mit Werten um die 430 MB/s. Bedeutet auch, dass alle andere Performancewerte für die Plattform, die ich bislang im Netz gefunden habe, Schrott waren (User, die mit lahmen SSDs getestet haben oder in einem Modus, wo sowas wie TurboWrite zugeschlagen hatte).

    Auch die IRQ-Affinity ist mit dem OS, das Du einsetzt, schon ideal:

    vorher
    123:          0          0       5422          0   PCI-MSI 524288-edge      eth0
    124:          0     131861          0          0   PCI-MSI 327680-edge      xhci_hcd
    
    nachher:
    123:          0          0       5748          0   PCI-MSI 524288-edge      eth0
    124:          0     150512          0          0   PCI-MSI 327680-edge      xhci_hcd
    

    Ethernet und USB3 werden auf unterschiedlichen CPU-Cores verarbeitet statt wie bei ARM fast immer alle auf cpu0 zu landen. 🙂

    Ich wollte eigentlich mein UP Board (x5-Z8300) einem Freund schenken, weil ich bei dem Ding aufgrund dessen doofen MicroUSB3-Anschluß nie irgendwelchen USB3-Storage vernünftig zum Laufen bekommen habe (bekanntes Problem) aber ich glaub, ich geb dem jetzt nochmal eine Chance.

  • Nur falls das noch von Interesse ist, ich nutze da drauf im Moment ein Debian Buster 10 und zwar nicht das Image vom Hersteller (was für ein lahmer Download), sondern den offiziellen RC1 Release von Debian.

    Läuft astrein, auch mit dem Gnome Desktop. Obwohl ich in dem Bereich ziemlich verwöhnt bin und das auf den Boards eigentlich nicht mag, weil fast immer viel zu lahm.

    So unbekannte Quelle ist nicht unbedingt das was ich mir hier im Haus installieren will 🙂