我将 Dell XPS 15 中的 NVMe SSD 从 PC300 SK Hynix 512G 升级为 Kingston SA2000 1T。我使用 Clonezilla 克隆磁盘,然后使用 GParted 调整分区大小/移动分区。一切顺利,没有错误。
但是现在,在 Ubuntu 20.04 上,我在执行较重的 I/O 操作(Android 应用程序编译、通过脚本写入多个文件、有时打开 Chrome……)时会遇到冻结的情况。
我没有看到任何与冻结事件相对应的/var/log/syslog
内容/var/log/kern.log
,但系统完全卡住了:我无法在终端中ctrl+或启动任何内容。此外,图标逐渐从菜单中消失(因为它试图加载它们?)。C
在 Windows 10 上,我在玩游戏时没有遇到任何问题,所以我推测这与 Ubuntu 有关,但无法真正证明这一点。
我尝试检查磁盘,它没有报告任何内容,唯一报告的是“inode 范围树(在第 1 级)可以更短”,我已更正。
smartctl
没有显示任何错误:
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-58-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: KINGSTON SA2000M81000G
Serial Number: 50026B76842D46F8
Firmware Version: S5Z42105
PCI Vendor/Subsystem ID: 0x2646
IEEE OUI Identifier: 0x0026b7
Controller ID: 1
Number of Namespaces: 1
Namespace 1 Size/Capacity: 1,000,204,886,016 [1.00 TB]
Namespace 1 Utilization: 782,120,886,272 [782 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 0026b7 6842d46f85
Local Time is: Tue Dec 29 11:57:29 2020 CET
Firmware Updates (0x14): 2 Slots, no Reset required
Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test
Optional NVM Commands (0x005f): Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Maximum Data Transfer Size: 32 Pages
Warning Comp. Temp. Threshold: 75 Celsius
Critical Comp. Temp. Threshold: 80 Celsius
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 9.00W - - 0 0 0 0 0 0
1 + 4.60W - - 1 1 1 1 0 0
2 + 3.80W - - 2 2 2 2 0 0
3 - 0.0450W - - 3 3 3 3 2000 2000
4 - 0.0040W - - 4 4 4 4 15000 15000
Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 25 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 911,056 [466 GB]
Data Units Written: 1,455,569 [745 GB]
Host Read Commands: 13,570,300
Host Write Commands: 12,412,188
Controller Busy Time: 104
Power Cycles: 35
Power On Hours: 23
Unsafe Shutdowns: 16
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Thermal Temp. 1 Transition Count: 41
Thermal Temp. 1 Total Time: 837
Error Information (NVMe Log 0x01, max 256 entries)
No Errors Logged
我的系统已更新Linux gp2mv3-laptop 5.4.0-58-generic #64-Ubuntu SMP Wed Dec 9 08:16:25 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
。
我该怎么做才能解决这个问题?是否存在与 Ubuntu 不兼容的问题?
答案1
在联系了 SSD 制造商后,我找到了罪魁祸首和解决方案。
罪魁祸首
问题出在 SSD 固件中,在 APST 的实现中。据我了解,SSD 向内核提供了错误的时序信息。
APST 是一种省电模式,它使 SSD 进入睡眠模式,需要知道 SSD 所需的“唤醒延迟”。A2000 中的固件宣传更快的唤醒延迟,这会阻止唤醒和 SSD。
要解决此问题,您可以禁用 APST 或覆盖 SSD 公布的值。
解决方案
您必须编辑nvme_core.default_ps_max_latency_us
配置。使用 0 来禁用它,或使用足够大的值来避免出现问题。
打开/etc/default/grub
并添加nvme_core.default_ps_max_latency_us=500
在变量的末尾GRUB_CMDLINE_LINUX_DEFAULT
。