最近,我用 Crucial M550 替换了笔记本电脑中的三星 SSD(戴尔 OEM)。现在我发现写入性能非常非常差。最大连续写入速度为 80 MB/s,传输大文件时系统会冻结几分钟。我的笔记本电脑是戴尔 Latitude E7240。
我在另一台戴尔笔记本电脑(E6230)中安装了 Crucial MX100 硬盘,也遇到了同样的问题。
它的原始写入性能实际上低于在线评论/基准测试中所见的任何性能。
当我将 SSD 放入台式机时,它的性能好多了!我能以某种方式修复这个问题吗?
答案1
我花了很长时间才解决这个问题,因为这里有两个因素在起作用。
如果您使用电池电源启动驱动器,戴尔会在启动 (BIOS POST) 期间向驱动器发送完整的省电命令。无论您稍后是否重新插入交流电源,省电功能仍将打开。我们可以使用自定义启动命令来解决这个问题。
Crucial 将 TRIM 与 NCQ 搞混了,导致数据丢失。在 Linux 中,这些驱动器的 NCQ 被硬编码禁用(列入黑名单)。需要升级固件和更新内核才能修复此问题。
解决省电问题
您hdparm
可以检查您的驱动器是否确实受到影响。
# sudo hdparm -B /dev/sda
/dev/sda:
APM_level = X
当 X = 128 时,省电功能处于活动状态(低性能),当 X = 254 时,省电功能处于关闭状态(高性能)。您可以通过完全关闭笔记本电脑并在插入交流电的情况下将其打开(开机前)来验证它是否为 254。而当启动时未插入交流电时,则为 128。
要在 Ubuntu 启动时再次手动禁用省电功能,请将其输入/etc/rc.local
(在线上方exit 0
!):
/sbin/hdparm -B254 /dev/sda
启用 NCQ:固件更新和内核更新
Crucial 在发布带有 NCQ 和 TRIM 的 M550/MX100 驱动器时确实搞砸了。如果在启用 NCQ 的情况下 TRIM 命令进入队列,则可能会发生数据损坏。Windows 不会将 TRIM 命令与队列中的其他 I/O 操作一起执行,而是单独处理这些命令。因此,Windows 用户不会受到这种可怕的数据丢失影响,但 Ubuntu 用户会受到影响。
因此,Linux 内核开发人员将所有最近的 Crucial SSD 列入 NCQ 黑名单。没有 NCQ,性能会慢很多。
好消息是 Crucial 最近的固件更新 (MU02) 解决了这个问题。然而,内核直到最近才意识到这一变化,黑名单范围缩小到 MU01 固件(这里)。此问题已在 Linux 4.0 中得到修复,并通过 vim-updates 频道以内核更新的形式在 Ubuntu 15.04 中进行了反向移植。