NVMe SSD 突然变慢(读取和写入)

iBu*_*Bug 6 linux performance ssd nvme

更新 1:我将这台服务器重新启动到 HDD 上安装的另一个 Ubuntu(也是 20.04 LTS),并hdparm -tT显示出超过 1 GB/s 的合理性能。现在我倾向于相信这是一个软件问题 - SSD 本身应该没问题。

更新 2:令人困惑的是,atop没有显示任何奇怪的磁盘活动,但磁盘仍然“非常活跃”。很多z_wr_iss线程偶尔会随机出现。

在顶上


这是安装在台式计算机上的 HP SSD EX920 1TB,作为个人服务器全天候 (24/7) 运行。它运行良好一年多了,就在上周,进程突然开始随机进入 D(不间断睡眠)状态。该驱动器仅半满并定期修剪。

HDparm测试结果很荒谬(/dev/nvme0是SSD有问题,/dev/sda是另一个HDD)(澄清:HDparm程序正常并且没有故障,SSD本身的错误性能只有几MB/s):

root@ubuntu:~# hdparm -Tt /dev/nvme0n1
/dev/nvme0n1:
 Timing cached reads:   15670 MB in  2.00 seconds = 7839.79 MB/sec
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 Timing buffered disk reads:   8 MB in  3.61 seconds =   2.22 MB/sec

root@ubuntu:~# hdparm -Tt /dev/sda
/dev/sda:
 Timing cached reads:   29014 MB in  2.00 seconds = 14525.03 MB/sec
 Timing buffered disk reads: 454 MB in  3.01 seconds = 150.67 MB/sec
Run Code Online (Sandbox Code Playgroud)

不过,SMART 信息看起来还不错:

smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-56-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       HP SSD EX920 1TB
Serial Number:                      xxxxxxxxxxxxxxx
Firmware Version:                   SVN139B
PCI Vendor ID:                      0x1dee
PCI Vendor Subsystem ID:            0x126f
IEEE OUI Identifier:                0x000000
Controller ID:                      1
Number of Namespaces:               1
Namespace 1 Size/Capacity:          1,024,209,543,168 [1.02 TB]
Namespace 1 Formatted LBA Size:     512
Local Time is:                      Mon Dec  7 13:54:15 2020 CST
Firmware Updates (0x14):            2 Slots, no Reset required
Optional Admin Commands (0x0016):   Format Frmw_DL Self_Test
Optional NVM Commands (0x005f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Maximum Data Transfer Size:         64 Pages
Warning  Comp. Temp. Threshold:     70 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     6000    8000

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:                        54 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    31,682,199 [16.2 TB]
Data Units Written:                 50,028,403 [25.6 TB]
Host Read Commands:                 538,395,033
Host Write Commands:                1,279,795,487
Controller Busy Time:               20,480
Power Cycles:                       1,012
Power On Hours:                     7,879
Unsafe Shutdowns:                   40
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    7
Critical Comp. Temperature Time:    0
Thermal Temp. 1 Transition Count:   8
Thermal Temp. 2 Transition Count:   2
Thermal Temp. 1 Total Time:         1118
Thermal Temp. 2 Total Time:         214

Error Information (NVMe Log 0x01, max 256 entries)
No Errors Logged
Run Code Online (Sandbox Code Playgroud)

尝试访问hdparm -B此 NVMe SSD 上的 APM 信息 ( ) 仅给出“设备的 ioctl 不适当”。

此外,我还没有发现任何损坏的数据(全部完好),只是读/写速度过慢。

该驱动器具有三个分区:一个 EFI 系统分区(几百 MiB)、一个作为根文件系统的 ext4 分区(128 GiB),其余的则存储在 ZFS 中。在各个分区上运行hdparm -tT会产生类似的结果(读取速度低于 10 MB/s)。所有这些分区都与 1 MiB 边界对齐。

接下来我应该做什么才能恢复该 SSD 的“正常”速度?或者我应该换一个?

小智 0

这是一个 nvme 驱动器,您可能需要安装 nvme-cli 来检查 APM 设置,以及 ioctl 不起作用的原因。z_wr_iss 线程是 Linux 上的 ZFS 写入线程。这些缓冲读取非常慢,也许您系统上的内存很慢?或者可能是 ZFS 调整问题。