Benchmarking Cheap SSDs for Fun, No Profit
louwrentius.com
louwrentius.com
I love the idea of this article, but it lost me here.
“Except for the initial few minutes” is a weird thing to dismiss, since the majority of desktop operations will be done in less than a few minutes. Most are in the span of seconds.
The only time someone will typically go past a few minutes of sustained writes is during very large file copy operations. It’s weird to put an emphasis on this relative edge case while downplaying the importance of burst performance.
Anyone who has switched from even a fast hard drive to a cheap SSD can see the difference an SSD makes. It’s true that my NAS can sustain higher throughput for longer than a cheap SSD, but it’s much slower at doing directory listings and scanning random files than even the cheap SSDs.
Although cheap SSDs do perform fine regarding reads, sustained write performance can be really atrocious.
Notice the sustained write performance.
So you consider copying large files a fringe / or edge case, but personally, I'm not so sure. Especially for people who buy cheap 1TB or 2TB+ SSDs, they may be unpleasantly surprised when they copy some media files or start downloading a game from steam.
Don't forget that it will take quite a while - due to the slow flash - to empy the SLC cache before you can benefit from it again.
> Anyone who has switched from even a fast hard drive to a cheap SSD can see the difference an SSD makes.
This article is not about the merrits of SSDs, that's a done deal, a good SSD beats an HDD by every conceivable metric.
My point is that people should watch out for cheap SSDs, as their sustained write performance is so slow.
No, I consider sustained writing at maximum speed for more than several minutes to be an edge case.
Consider the 240GB ADATA in the article. It can write over 400MB/sec for over 150 seconds before throttling kicks in. That's 1/4 of the entire drive.
The Crucial drive has no problem doing at least 100MB/sec for the entire capacity of the drive, if that's your thing.
> but personally, I'm not so sure. Especially for people who buy cheap 1TB or 2TB+ SSDs, they may be unpleasantly surprised when they copy some media files
You can write 40GB to 3 of these drives and never even throttle. That's an entire Blu Ray, and it would occupy 1/3 of the 120GB drives tested.
If someone has a use case that involves writing 50% of the drive at full speed over and over again, a cheap SSD is not the ideal tool. But that's really an edge case for a budget 120GB drive.
> or start downloading a game from steam.
The slowest SSDs in the article can consume the entire bandwidth of a Gigabit internet connection until the drive is full.
The ADATA has dramatic throttling, but it only kicks in after 60GB written at full speed.
You're not going to encounter these throttling scenarios under normal operations. If you're only getting a drive for 100GB sequential transfers over and over at the highest possible speed, get something else. But then again, you're probably not looking at $20 120GB SSDs anyway.
That's quite slow to be frank, as stated slower than an HDD and that's quite disappointing for an unsuspecting consumer who does want to transfer larger files.
P.S. see the footnote where after 1 hour or about 300 GB the transfer speed start to collapse entirely.
> Consider the 240GB ADATA in the article. It can write over 400MB/sec for over 150 seconds before throttling kicks in. That's 1/4 of the entire drive. > No, I consider sustained writing at maximum speed for more than several minutes to be an edge case.
It's not specifically about the small 120/240 GB SSDs, the 1TB Crucial shows that larger drives exhibit the same problem. If your SSD is 1TB or 2TB, that 50GB transfer doesn't feel so enormous anymore as compared to drive size.
I'm going to agree that most people won't have a use case for transferring large files. I've actually repurposed the Kingston as an OS drive for my lab server.
But the key objective of my blog post is to show that cheap SSDs exhibit this behaviour in the first place. Many people are not aware / don't know. They can still decide that it's no problem for them. But for some, it will be an issue.
This is not about the smal <$20 SSDs, but about the concept of cheap SSDS often having terrible sustained write speeds, regardless of capacity. And many review sites don't highlight this issue or actually show when the throttling kicks in.
That would be an entirely different experiment. This one has highlighted the most important pitfall of using critically undersized SSDs, so its conclusions say next to nothing about multi-TB drives.
Tom's Hardware NVMe benchmarks include a "Sustained Write Performance and Cache Recovery" component. Whenever there's a good sale price on an NVMe, that is just about the only metric I hunt down now. Most of the worst drives they test will always beat a mechanical disk, but the worst drives Tom's Hardware ever tests are still decent drives.
I grabbed one of the cheapest SATA SSDs last week to replacing a failing lvmcache drive. It is a NETAC 1 TB that might still be on sale on eBay for $34. I expected the worst, and I did want to test its sustained write performance, but I wasn't as nearly scientific as you!
I just ran dd for a while and watched it stay between 420 and 470 megabytes per second for about 120 gigabytes straight before I stopped the test. The meanest I am to this cache is dropping 50 GB of video on two different days each month, so that was all the data I needed.
Had I known that I would be reading your blog four days later I would have let the dd finish so I could take better notes! Thank you for taking the time to do the science for us!
Depends on when you bought it. Crucial/Micron decided to stop introducing new branding when they updated their SATA SSDs, but the hardware inside has changed several times to incorporate new generations of NAND flash memory, and probably at least one update to the SSD controller by now. None of that matters to the top-line specifications they advertise, but such changes can be relevant for more stressful, more thorough or less realistic benchmarks.
Especially seen that the one who has the means to pay for fiber to the home able to sustain 500 Mbit/s+ download (at less than that even cheap SSDs shall sustain the write speed anyway right?) and has the means to buy games from Steam probably can afford to spend 50 EUR on a fast SSD?
TFA mentions 137 EUR Samsung SSD from 2019 but prices have dropped since then. And nowadays all mobos ship with NVMe M.2 PCIe slots and you find stuff like that for 44 EUR: Sabrent M.2 NVMe SSD 256GB Interne Solid State 3400 MB/s read, PCIe 3.0 X4 2280 or for 80 EUR: Samsung 970 EVO Plus MZ-V7S1T0BW (that was a 200 EUR+ drive two years ago I think).
Would have been interesting to compare vs those beasts, which are also cheap.
My point is: if you've got a setup allowing you to max the write speed of a cheap SSD, you've got the 30 or 40 additional EUR to buy an ultra fast beast.
P.S: I don't mind paying a bit more so as adviced here, for my new build I bought a Western Digital SN850X Black.
For anything by very light use, I would expect the drives to be written just about at all times.
Also, some Linux users bloat their io buffer size to several GiB, set the eviction priority to 1 (rarely flushes dirty cache back to storage), and use F2FS for /home . This limits ssd wear, trim is auto run once a week, and hardware storage drivers can still regularly flush the drives internal high-speed SLC area as needed. Even the cheapest Sandisk and Samsung SATA drives from 6 years ago are still working just fine on the old hosts with this setup, and we expected them to EOL 4 years ago.
Tip: always sort by lowest negative ssd product reviews first. =)
As one example the Intel P3700 can do 17 full drive writes per day[1] over five years! With a MTBF of 2 million hours (230 years).
Over the years I've used these as my boot/OS drives and I've never seen one fail. Yes, 5-10x the price of the extremely cheap drives in this post but all in all not bad if you just don't want a drive to fail.
[0] - https://www.ebay.com/itm/295520377095?hash=item44ce631907:g:...
[1] - https://www.intel.com/content/dam/www/public/us/en/documents...
But mostly, it's a matter of the consumer drives having low-balled ratings so that they don't cannibalize sales of the enterprise drives. Because the write endurance ratings are more about when the warranty expires than about when the memory itself is actually worn out.
How do you tweak these? I'm aware of dirty_writeback_centisecs and the likes, but you are most likely referring to something different.
data=writeback,journal_async_commit,lazytime,nobarrier,commit=99999
Good for caches, scratch space, build dirs and anything that can be rebuilt from other data but it'll get corrupted during any non-graceful shutdown.overlayfs offers an even more aggressive mount option "volatile" which ignores all O_SYNC or fsyncs, but no other filesystem exposes that tradeoff.
I find performance wise, a logging fs like f2fs is actually not as terrible as one would expect for most use-cases:
UUID=abc /home f2fs defaults,noatime,nodiratime,noquota,discard,nobarrier,inline_xattr,inline_data 0 2
This profile is what I prefer for AORUS 5/RTX3070/i7-12700H/16GB laptops, and despite how terrible the OEM hardware is... this setup will run acceptably well with dual Intel 670p M.2 drives.
The following should work with most Debian variants, but is hardly optimal for every platform. But if your laptop is similar, than it should be a good place to start. One caveat, when ejecting media it may take some time to flush your buffers.
sudo nano /etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.icmp_echo_ignore_all = 1
#ban list mem
net.core.rmem_default=8388608
net.core.wmem_default=8388608
#prevent TCP hijack in older kernels
net.ipv4.tcp_challenge_ack_limit = 999999999
#may be needed to reduce failed TCP links
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_workaround_signed_windows=1
net.ipv4.tcp_fack=1
net.ipv4.tcp_low_latency=1
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_frto=2
net.ipv4.tcp_frto_response=2
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_window_scaling = 1
kernel.exec-shield=1
kernel.randomize_va_space=1
#reboot on kernel panic after 20 sec
kernel.panic=20
vm.swappiness=1
vm.vfs_cache_pressure=50
#percentage of system memory that can be filled with dirty pages
# run to check io performance with: sudo vmstat 1 20
vm.dirty_background_ratio=60
#maximum amount of system memory filled with dirty pages before committed
vm.dirty_ratio=80
vm.dirty_background_bytes=2684354560
vm.dirty_bytes=5368709120
#how often the flush processes wake up and check
vm.dirty_writeback_centisecs=10000
#how long something can be in cache before it needs to be written
vm.dirty_expire_centisecs=60000
vm.min_free_kbytes = 16384
# increase system file descriptor limit
fs.file-max=120000
#CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (number_of_bits_in_a_pointer / 32)
#low power CPU should halve mem usage limits
net.ipv4.netfilter.ip_conntrack_max = 16384
net.netfilter.nf_conntrack_max = 16384
net.nf_conntrack_max = 16384
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 86400
kernel.pid_max = 32767
net.ipv4.ip_local_port_range = 2000 65000
Managed to repeat the mistake again on black friday with a cheap SATA drive that cannot write anywhere close to the SATA speeds. I even checked the specs on this but real world performance isn't anywhere close. Probably using different chips with the same model number?
And to top it off I just got a 256GB M2 Macbook air for travelling which has horribly crippled IO perf compared to the other models, which I didn't realise until after I bought it.
It's all tolerable really, given I have some good NVMe drives in my main workstation, but I cannot understand how those do 2000MB/sec no problem, but cheaper drives struggle with 100MB/sec. NVMe drives have plunged in price over the last couple of months so maybe getting them with a USB enclosure/SATA convertor is a better way to assure higher quality.
Where? I've only seen a few models get talked about, and they could all easily bottleneck a gen 4 connection.
It's still hard to find a use case, but the interface is not overspecced compared to the flash and controller on the ones I've seen.
There are architectural reasons for moving away from SATA I know, but the raw bandwidth is there.
M.2 PCIe 3.0 x4 is 32 Gbps (4 GB/s), the same with PCIe 4.0 is about 64 Gbps, and PCIe 5.0 gives you 128 Gbps. 5/10/20 times faster than SATA 3, respectively.
Hard drives manage a bit above 250 MB/s nowadays, sequential. MLC and TLC SATA SSDs can usually saturate the interface, but QLC SSDs are generally much slower with write speeds between 50 and 150 MB/s.
When buying anything from Apple (be it an iPhone or a Macbook), always need to make sure it's at least one notch above minimum storage tier.
For example, if the lowest tier is 512 GB, should go for 1 TB storage.
This helps both performance and the longevity.
NAND flash almost never fails a whole die at a time. An individual NAND die fresh out of the fab will already have a few defective memory cells, and as the drive is used, more write cycles will result in more memory cells failing and being retired. This gradual, partial failure is fundamental to how SSDs manage flash memory.
Nope.
> I guess the question is what's more likely, one of one chips breaking, or one of two chips breaking?
Doesn't matter. In each case you lose your data. And if the system is so frail what addition of another chip rises the failure rate through the roof then the talk about the reliability of such system, no matter how much chips it have, is moot.
No DRAM cache and less flash chips, means less throughput. All these cheap SSDs I've tested only have one physical flash chip.
High-performing SSDs often spread their capacity over multiple chips so they can leverage the individual chip bandwidth and thus have more throughput.
But there are likely much more factors that I'm not familiar with.
Do you really feel the crippled IO perf? I mean this machine still has read rates between ~800 and 1700 MB/s. Thats not exactly the definition of slow.
The most ridiculous part of all of this is that they're pushing a pro machine with crippled IO performance.
I'm sure you got other benefits out of swapping to SSD's, but your comment just got me thinking.
There are ideas on how one would do an actual defrag. They are generally based on a concept called block pointer rewrite, which Matt Ahrens once said could be the 'last feature ever implemented in ZFS', as it would make everything so much more complicated, that it would be hard to add new features afterwards [1].
[1] https://www.youtube.com/watch?v=G2vIdPmsnTI#t=44m53s (Link to the beginning of the explanation, the 'last feature ever implemented' quote is at at around 50:25)
There's no good ZFS defragging tool, although the initial send to a new pool will accomplish that. This is just a thing for COW-style filesystems.
It doesn't have to be.
ZFS in particular has an architecture that's very hostile to ever moving things.
BTRFS has a design that's amenable to defragmentation, but the builtin option doesn't work with snapshots and the external programs I've tried are partial and finnicky.
In recent years I use Linux with default ext4 mostly. Linux and ext4 appear to me to regularly maintain the disk allocations somehow, but I do not have a graphical tool to show that; details welcome.
In 'almost' every user based usage scenario a SSD is going to perform better than an HDD. About the only time an HDD is better is when you're writing out large singular data files. But even then you have to be cautious, as if the drive is shared with other read/write operations you can find the performance again drops off a cliff.
But that’s about it. The random I/O of even a cheap SSD will be far superior to the limited IO of a fast mechanical hard drive for typical workloads.
HDDs are actually pretty good at sequential writes. Random writes show a much much bigger gap.
Oddly enough this test doesn't even get 300MB/s writes for the Crucial drive, where other benchmarks are 400MB/s or above for the same drive
https://www.anandtech.com/show/12165/the-crucial-mx500-1tb-s...
I'm not sponsored in any way. All mentioned products have been bought with my own money."
Funny that the author felt the need to disclaim that they are not taking money from anyone to write the article. How dare they!
None of this applies to SATA SSDs, which is probably why it was omitted from the article, but it's a good thing to keep in mind if you're shopping for one for yourself. (These days I would only consider a SATA SSD for a system that did not support NVMe. Otherwise low end NVMe is significantly better.)
Imho it’s a little bit like complaining that long, sequential writes to DRAM are slower than reads from L1$. It’s true, it just doesn’t matter for most of us.
More often than many would expect. Downloading/installing games can do it. No doubt many complaints to Valve about slow servers are likely the fault of slow consumer SSDs not able to keep pace with modern download speeds. And people with the smaller/slower SSDs are more likely to be installing/removing games more often. It's a strange strange world where local storage might bottleneck a residential internet connection.
I set up a 4 gigabyte RAM disk for downloads and such so my hard drives weren't slowing me down. Eventually I got myself some nice and fast SSDs, but even now I run some games of hard drives because of the still significant cost of replacing terabytes of storage capacity.
Writes are often just as important, there is no picking and choosing between read/write performance, both must be acceptable.
And that's true for both sequential and random I/O.
If you ever have to ingest some large data set on any of these cheap SSDs you'll be in for an unwelcome surprise.
And although outside the scope of my article, random write I/O performance is beyond terrible as soon as you're out of the SLC cache.
Any clue what causes these?
None of the cheap SSDs are fit for purpose in my opinion for any of this.
A log-structured filesystem doesn't magically turn a random write workload into sequential writes; it incurs more or less the same overhead that the SSD's FTL does doing read-modify-write cycles causing write amplification.
Sure, but a cheap SSD is still (supposedly) faster than an HDD when it comes to random writes/reads, which is a big deal for running applications and OSes. I miss a random benchmark to put things like this in perspective.
I cannot speak for the other drives.
Regarding the MX500, I actually used the drive and made a backup with DD beforehand. Afterwards I wrote the backup back on the drive (entire drive write) with DD and sustained write performance fluctuated between 40MB/130 MB/s if I recall correctly.
My real world experience with MX500 is pretty well aligned with: https://ssd.userbenchmark.com/Compare/Samsung-870-Evo-250GB-...
I wonder how your other drives score on those tests.
Some people report that Crucial uses different hardware under the same MX 500 brand, maybe that explains things.
How old is your drive?
Thats fancy brand name ones! Chinese noname (unless you consider "blue" a brand :P) can be had for 1TB <$30 and 2TB <$40 with free shipping. No doubt using Chinese manufactured NAND flash, I have to wonder about write endurance and reliability.
https://www.ebay.com/itm/385414212830 https://www.ebay.com/itm/165934839845 https://www.ebay.com/itm/394522781098
I wouldn't count on it; there's only one Chinese NAND manufacturer (YMTC) and they are still a relatively new and low-volume market participant. Most cheap drives use NAND made by one of the other major manufacturers, but it's the leftovers that had initial defect rates too high for the better brands/models to use.
Any run of the mill, entry level USB flash drive behaves the same way. Fast until caches fill, then limping while trying to write this data to the proper flash back end (at 10MB/sec in most cases).
If you pay the price, your USB drive will be a proper SSD with a USB to SATA controller, SMART and everything (Sandisk's Extreme Pro drives, for example).
It went super fast at first, hitting the ~550 MB/s limit of the SATA6 bus, for about the first 16 GB. Then it dropped to about 50 MB/s, slower than a hard drive.
For my use case (gaming), it would never matter, but it still made me scowl a bit.
Indeed, all the cheap SSDs I've tested use just one chip.
The most in depth SSD reviews I've seen are on this YT channel: https://www.youtube.com/@prossd
They are in Russian, but subtitles are available.
And then they wonder why copying some files is so slow.