I have an external USB 3 "spinning rust" 2.5'' Harddisk.
Serial number lookup at Western Digital reveals this is a model WDBYNN0010BBL, "WD My Passport (Ultra) Portable Storage, Blue". 1 TB = 931.48 GB, cheap and cheerful. No data sheet. WD instrumentation software provides no way to find out more about the actual harddisk in the enclosure.
Although USB 3, I connect it to an USB 2 interface on the PC (it's an old PC).
I'm filling the disk with semi-random data, directly writing to the partition (i.e. /dev/sdd1
in Linux).
Problem:
Initially, the writing program reports a write performance of ~28 MiB/s (way below the max performance of USB 2, 50.7 MiB/s).
The writing program does nothing except write a chunk of data, then sync.
Once around 7 GiB have been written, write performance becomes flaky and starts to pogo between 8 MiB/s and 28 MiB/s.
After about 115-120 GiB have been written, write performance decays further to consistently hover at around 6 MiB/s, temporarily going as low as 2 MiB/s for a few hundred MiB.
However, once you suspend the program for half a minute (CTRl-Z) and then resume it, write performance goes back up to 28 MiB/s. And then after some time, the performance decays again.
Question:
Is there something in the construction of this disk which allows only short bursts of acceptable write speed? Does it pretend to be fast by having a large internal (nonvolatile) cache?
I have a number of other external USB disks (some from WD, although none that are of the exact same model) and they all manage to sustain 10+ MiB/s write speed, which makes backups at least viable as they can run in an afternoon instead of 24h.
Update #1
It is also running the latest firmware v1.019, as per "WD Firmware Updater" for Windows)
Update #2
"WD Drive Utilities" for Windows says it passes the S.M.A.R.T. test, the "quick drive test", and the "complete drive test". Nice!
Update #3
Filling the disk on another Linux machine via an USB3 interface upgrades the write throughput to 100 MiB/s. However, the decay is still there, going down to 33 MiB/s or even 9 MiB/s, so that at the end of the operation, the mean write throughput for the whole disk was just 30 MiB/s.
Update #4
smartctl --all /dev/sdd
reveals:
Device Model: WDC WD10SDZW-11UMGS0
Serial Number: WD-WXT1A57EU75S
LU WWN Device Id: 5 0014ee 607b8ce4a
Firmware Version: 01.01A01 <--- HUH? I thought it was 01.019??
User Capacity: 1,000,171,331,584 bytes [1.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 5400 rpm
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-3 T13/2161-D revision 5
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Sun Dec 8 12:58:26 2019 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
All offline tests passed, reallocated sector count is 0 (though this may not mean much).
There may be many reasons for decreasing performance, but I understands it decreases steadily the more data is written to the drive.
My first thought was that it can have some bad sectors, but I would only impede the speed at a few points and not be so consistent.
Try connecting the drive to another computer and test it's performance. USB 2.0 can't have too much of a throughput though. 40MB/s is practically a max and half that is typical for cheap drives.
Test it on USB 2.0 and 3.0 (if you can) but at least on a different machine (or two). If the issue will occur on another machines then I would think there's something wrong with the drive itself. Check WD's page if there isn't any mention about new firmware fixing the issue you're having.
There are many possible root causes:
flacky driver or controller: USB protocol (and cheap implementations) has a somewhat bad reputation regarding stability. Maybe something got overflooded and needs some time to recover;
SMR HDD: hard disk based on shingled magnetic recording generally have some fast (or landing) PMR zones intermixed with larger slow or shingled ones. If a landing zone is completely filled it needs to be flushed to the shingled zone, which take time (with the disk appearing as "freezed" or very slow in the meantime);
bad sectors spread around the disk surface.
Can you post the output of
smartctl --all <dev>
? Please also try the same disk on another computer: does it behave differently?