今年年初,我买了一款便宜的 SSD SomnAmbulist 120GB。经过几次基准测试后,我注意到一些奇怪的吞吐量测量值。简要来说:
初始基准|图像
格式化后,吞吐量符合广告宣传的规格,读取速度为 510MB/s,写入速度为 440MB/s。
写入容量达到 35% 时吞吐量开始下降,稳定在读取速度为 200~300MB/s,写入速度为 40MB/s。
虽然卖家的广告中没有提到这种下降,但这确实是预期行为,空闲几分钟后(将缓存刷新到永久区域)应该会恢复正常。闲置 1 小时后的基准测试|图像
不幸的是,吞吐量还没有恢复正常(还没有?)。
读取速度为 315MB/s,写入速度为 440MB/s,在写入 10% 容量时速度就开始下降。闲置 12 小时后的基准测试|图像
吞吐量仍未恢复正常。
问题
- 对于如此便宜的 SSD 来说,这是预期的行为吗,或者确实有什么奇怪的?
- 这里可能出了什么问题?
- 知道如何解决这个吞吐量问题吗?
调试信息
- 支持 SSD/TRIM
- 已启用 fstrim
- 不支持 SSD APM(高级电源管理)
- f3(打击 Flash 欺诈)OK
## SSD/TRIM SUPPORTED
root@debian:~# hdparm -I /dev/sda | grep -i "trim\|power"
* Power Management feature set
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read data after TRIM
## SSD/TRIM AVAILABLE (DISC-MAX NON ZERO)
root@debian:~# lsblk -D /dev/sda
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 512B 2G 0
## ADVANCED POWER MANAGEMENT NOT SUPPORTED
root@debian:~# hdparm -B /dev/sda
/dev/sda:
APM_level = not supported
## FSTRIM ENABLE
root@debian:~# systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Sat 2022-12-03 03:36:10 UTC; 35min ago
Trigger: Mon 2022-12-05 00:51:25 UTC; 1 day 20h left
Triggers: ● fstrim.service
Docs: man:fstrim
Dec 03 03:36:10 debian systemd[1]: Started Discard unused blocks once a week.
root@debian:~# systemctl status fstrim
● fstrim.service - Discard unused blocks on filesystems from /etc/fstab
Loaded: loaded (/lib/systemd/system/fstrim.service; static)
Active: inactive (dead)
TriggeredBy: ● fstrim.timer
Docs: man:fstrim(8)
root@debian:~# fstrim -av