Recently I bought SanDisk Extreme Pro Portable SSD. It is advertised as delivering almost 2GB/s read and and write speeds. Of course, such speeds are only achievable with compatible hardware.
I have two MBPs.
The first one is Mid 2015 with ThunderBolt 2 and USB 3.1 ports. It runs Catalina and I am kind reluctant to upgrade it to Big Sur. I connected my new SSD to this machine to get just about 18MB/s transfer speed. Of course, I thought, it is old hardware and it is pointless to expect any miracles from it.
The second one is the latest MBP with top specs, which I bought just few weeks ago. It is 16 inch model from the end of 2019. ThunderBolt 3 ports are claimed to support 40Gb/s transfer rates in native ThunderBolt mode and at least 10Gb/s in USB 3.2 mode. This way USB 3.2 connection should deliver about 1GB/s transfer speed. The expectation did not come true. The best transfer speed I can see from the latest and greatest 2019 MBP is 48.8MB/s.
Being technically advanced I know — to achieve good transfer speeds UASP must be supported. After connecting my new SSD drive to Catalina Mid 2015 MBP IOUSBAttachedSCSI is not activated, i.e., SSD is operating within old USB Mass Storage protocol, which is not optimal and is not designed for speed. The situation is even worse with the latest and greatest MBP, running Big Sur. It does not have IOUSBAttachedSCSI driver at all.
I did funny experiment. On all my systems I usually have some virtualization software installed. I happen to have VMware Fusion and Ubuntu 20.04.2 virtual machine on both computers. I disconnected my new SSD from host OS and connected it to virtual Ubuntu 20.04.2. Mid 2015 MBP demonstrated 416MB/s transfer speed and 2019 MBP demonstrated 700MB/s transfer speed.
My speed measurement methodology.
To measure speed with macOS I utilized dd and gdd. The results are less then 0.1% different, repeatable and consistent. This way I describe only gdd methodology, since it is simple.
... % diskutil list
...
...
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 TB disk2
1: Microsoft Basic Data Extreme Pro 2.0 TB disk2s1
...
...
... % sudo gdd if=/dev/disk2 of=/dev/null bs=1M status=progress
537919488 bytes (538 MB, 513 MiB) copied, 11 s, 48.9 MB/s^C
549+0 records in
548+0 records out
574619648 bytes (575 MB, 548 MiB) copied, 11.7698 s, 48.8 MB/s
To measure speed with virtualised Ubintu 20.04.2 I utilised similar methodology:
... $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 487M 0 part /boot
└─sda2 8:2 0 31.5G 0 part /
sr0 11:0 1 1024M 0 rom
sdb 9:0 1 2000G 0 disk
└─sdb1 9:1 1 2000G 0 part /mnt
...
...
... $ sudo dd if=/dev/sdb of=/dev/null bs=1M status=progress
18229493760 bytes (18 GB, 17 GiB) copied, 26.3 s, 692 MB/s^C
18647+0 records in
18646+0 records out
19551748096 bytes (20 GB, 18 GiB) copied, 28.2948 s, 691 MB/s
The results provided are collected from 2019 MBP, running Big Sur.
Disclaimer: I know, that dd is measuring synchronous reads and writes. I.e., next data exchange operation starts only after previous operation completely accomplished and data reached their final destination. Of course, fio instead of dd in asynchronous mode could possibly improve results, but I doubt 48.8MB/s from Big Sur could be improved 14+ times to just reach what virtualized Ubuntu is demonstrating.
Just for those, who understands what virtualization is. VMware Fusion is Type 2 hypervisor without hardware pass-through support. This way every single USB packet must be send/received by host driver and extracted/replicated into virtual address space. Of course, many advanced things, like common memory and fast IPCs are employed to make things happen, but virtualization layer is still there. Virtualization is never free. In this case it adds latency and overhead for any IO operation.
In simple words - hardware is there. I can use virtualized Linux to perform transfers, but this is not what I have my MBP’s for. I still hope, that there is a hidden button “Make Everything Perfect” somewhere in macOS, which I just don’t know where to look for.
Please, suggest, how to get expected USB SSD/HDD transfer speeds with latest Catalina and Big Sur.