This is just an experiment, it might or might not shed some light on the topic. Try installing “htop” (“sudo apt-get install htop”). Then run this as root and look only at one specific user’s processes…I’m going to assume the copy is being done by user ubuntu:
sudo htop -u ubuntu
Notice in the lower line of htop there is a description for hot keys. One of those is the “F7” key accessing “nice” levels (process priorities). A normal process has “nice” of 0 (by default htop lists this as a column). A process with higher priority (not as nice to other processes) has a negative number…you do not want to go more negative than perhaps -2 unless you really know what you are doing (you can get priority inversions). Start a long copy as user ubuntu which will take quite some time, and when you see that process show up on htop, arrow up or down to the process, hit the F7 key, and renice to “-1”. See if throughput goes up.
Although the “nice” command exists on command line for launching a new command with an altered priority you can only give higher priority if you operate as user root (thus why I said use “sudo” for htop launch). If you “cat” a file to “/dev/null” you’ll actually also have the driver for “/dev/null” involved, so it isn’t a good test, but an example of this could be replaced using cp instead of cat. A sample for an entire partition:
# In the first terminal:
sudo htop -u root
# In a second terminal:
sudo nice --1 cat /dev/mmcblk0p1 > /dev/null
# NOTE: the nice argument adds to nice level, -1 is just "add 1"..."--1" is subtract 1
A similar test, perhaps better because it doesn’t involve file system drivers in reading the drive (I am assuming your USB drive is “/dev/sda”):
# Copies the entire disk as raw bytes into nothing 4096 bytes at a time.
sudo dd if=/dev/sda of=/dev/null bs=4096
There are also of course benchmarking tools (and you probably used one) which can be launched with “nice --1”. I suspect a benchmark tool copies into RAM and drops the data…if it actually writes to the disk during a copy you’re limited by the slower of USB, disk read speed, and disk write speed. Probably you’d see only disk write speed as the weak link. You might consider looking for a real benchmarking tool. Using “/dev/null” is probably better as a destination than a file, but not necessarily as good as it might seem.
If a process has been give one level of priority more (a nice of “-1”), then you will immediately see speed increases over time if there was competition from other user space processes. You could try it as -2, but don’t go any more negative. If -1 doesn’t help, then it is unlikely -2 will change things much anyway.