SSD更换后io操作卡死

SSD更换后io操作卡死

我将 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

答案来自那篇文章:https://askubuntu.com/a/1100886/33386

相关内容