With a data transfer of 50 GB estimated 5 hours, are USB-C claimed speeds inaccurate or to blame?

Solution 1:

The bus speed you quote is a theoretical maximum and not that the bus somehow speeds up any and all storage connected to it.

An analogy would be quoting the vehicle capacity of a 10 lane highway that’s perfectly packed with cars, all of which drive themselves bumper to bumper in perfect coordination. With good buffering, ideal behavior, no hiccups you can hit the benchmark “specs” on the nose every time.

In practice, there are lane changes, no cars waiting to enter the traffic pattern, or just everyone driving in the left lane. (Let alone spiking the breaks or cutting others off ...)

Back to computers, my advice is to open the Activity Monitor app and look at the Disk tab. Specifically the IOPS and data rates are different constraints.

enter image description here

IO is like getting all the vehicles on and off the highway so you’ll have low transfer rates when there are lots of small delays and metadata being read from slow storage. That's on the left side and in the chart when IO is selected.

Your graph shows an IO constrained transfer, the system is spending more time locating the next group of bits to transfer, it can’t likely fill up the max transfer of the drive. Most consumer drives can absorb 20 MBps to 60 MBps and most Macs can put out hundreds and NVMe ssd on recent Macs thousands of MBps and IOps.

Bandwidth is another constraint similar to the on ramps and off ramps - your sending and receiving device might be the bottleneck. That's the data read/sec on the right and shown above.

Without any specific data measurements, hopefully the high level description of what to look for and how to think of the bus speed helps you sort out if you brought too fast an expectation to devices that can’t deliver or if everything is capable of fast transfers and you have a configuration / software / hardware issue in hand to diagnose and optimize.

My hunch is the speed estimate is conservative, Finder is single threading the transfer and your bottleneck is a consumer grade external drive (HDD or slower flash storage) and you'd be able to get 60% of the max with a more efficient transfer and a fast Thunderbolt 3 type storage device attached: https://www.virtuallyghetto.com/2019/06/thunderbolt-3-enclosures-with-single-dual-quad-m-2-nvme-ssds-for-esxi.html

Solution 2:

It's your data

That variability of data rate suggests a copy of many smallish files - akin to backing up the OS files, for instance, where a typical file is as small as 30 bytes and often in the 5-100kb range.

Every file has some "write" overhead that must be done per file, regardless of the file size, such as writing the directories. And this isn't a big block transfer; it involves the physical drive hunting all over the disk, which means you're doing a lot of waiting for head traverse and for the right sector to come around.

Once you get into big files, like your videos, you will be doing steady block transfers and should start seeing much more impressive rates, certainly at least 30MB/sec. Still a far cry from USB's nameplate speed, but the limiting factor is still this physical hard drive, and a basic consumer-tier one at that.

Once, I tried to unzip a ZIP file with about 5 million rather small files on it. At the rate it was going, it was going to take over a day. So, I created a RAMdisk. It unzipped in 5 minutes. Seek time matters!

Solution 3:

There are many possible answers, but before I offer them - Have you actually tried to go on and start the copying process? The initial estimate is - well - just an estimate, and after the first few megabytes, it may jump down to something more appealing.

Now - the time it takes to copy 50GB from one drive to another, is not only bound by the hardware data-transfer rate of the bus (in your case, 10GBPS or little over 1 Gigabyte a second).

It strongly depends on the read speed of your source drive and the write speed of your target drive - if your external drive is a mechanical HDD - it won't be able to sustain writing data at the theoretical USB-C 3.1 rate.

Then - it also depend heavily on the data you try to copy. Is is just one large file? maybe a directory hierarchy containing millions of small files? something in between?

When copying complicated file-system subsets (directory hierarchies) from one drive to another, For one, scanning the source directory and its descendents is a process that takes time. But also creating a complicated directory structure on the target drive takes lots of time too - regardless of the size of their contents.

In your case, I believe it is just your external hard drive. It may be a slower HDD, or it won't support the faster connection variant.

Last, but not least - faulty or poor-quality cables sometimes cause very-slow file transfers - and in some cases, these cables can create corrupt copies of the original data on the target. So check with another cable too.

Last -Even with a slow HDD connected via old 480MBPS USB cable, I was able to copy a full hard-drive (512GB) in just under 45 minutes - so the whole thing can simply be a hardware/cabling issue.