确定系统在高 IO 负载时无响应

确定系统在高 IO 负载时无响应

我试图理解为什么我的 Fedora 38(Wayland 上的 KDE)在根磁盘(SanDisk SSD PLUS 240GB (UF5000RL))上有高 IO 时变得无响应几秒钟。
根分区是 LUKS 上的 Btrfs(详细信息在问题末尾提供)。

在这些情况下,即使分配给设备的 IO 调度程序是 BFQ(Fedora 中 SATA SSD 的默认调度程序),在这些情况下,似乎长时间都不会处理进一步的 IO 活动。有些应用程序(例如 Firefox)如果尝试 IO 甚至会崩溃(如果某些子进程没有响应,它可能有一个看门狗)。

当我启动电脑后,当我登录桌面并且开始加载内容(如面板、小部件和一些系统托盘应用程序)时,可能会出现此问题。

最糟糕的情况尤其是当 Steam 尝试更新《暗黑破坏神 4》等大型游戏(就存储而言)时。实际上,Steam 似乎只下载更改的增量,并将新文件组合到“下载”目录中。
现在,它通常在与游戏相同的磁盘中执行此操作,但在我的情况下,该磁盘没有足够的空间(它需要另外约 60 GB),因此 Steam 决定将这些新文件写入我的根磁盘。
iostat 1显示写入突发从 35 MB/s 到 130 MB/s...

在网上进行了一些研究后,我发现了这个blktrace工具,因此当另一个《暗黑破坏神 4》补丁到达 Steam 时,我设法跟踪了几秒钟的 IO 活动。这是解析的跟踪blkparse(它不应包含任何个人数据):https://gist.github.com/tesfabpel/eb7d0f0f6cf64aa666e3e387bb771a21

我已经btt成功收集了必要的数据来创建 3 个图,分别matplotlib代表 Queue2Device、Device2Completion 和 Queue2Completion(下图和摘要)。

我想了解问题是否出在我的 SSD 上(是否可能出现故障?我注意到 D2C 时间最高,但这可能是正常的...我进行了扩展 SMART 自检,但没有发现有什么问题)或者 LUKS / btrfs 中的一些配置错误...

我需要从blktrace痕迹中提取更多数据吗?

这个问题让我抓狂,我想更多地了解 Linux 的 IO 子系统(希望它对其他人也有用)。

谢谢。


这些是 LUKS 的设置:

LUKS header information
Version:        2
Epoch:          6
Metadata area:  16384 [bytes]
Keyslots area:  16744448 [bytes]
Label:          (no label)
Subsystem:      (no subsystem)
Flags:          allow-discards same-cpu-crypt submit-from-crypt-cpus no-read-workqueue no-write-workqueue 

Data segments:
  0: crypt
        offset: 16777216 [bytes]
        length: (whole device)
        cipher: aes-xts-plain64
        sector: 512 [bytes]

Keyslots:
  0: luks2
        Key:        512 bits
        Priority:   normal
        Cipher:     aes-xts-plain64
        Cipher key: 512 bits
        PBKDF:      argon2id
        Time cost:  4
        Memory:     1048576
        Threads:    4
        AF stripes: 4000
        AF hash:    sha256
        Area offset:32768 [bytes]
        Area length:258048 [bytes]
        Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
        Hash:       sha256
        Iterations: 170223

正如您所看到的,我使用了一些标志 ( allow-discards same-cpu-crypt submit-from-crypt-cpus no-read-workqueue no-write-workqueue) 来尝试加速 {en,de}加密,但它没有解决问题。

这是以下结果cryptsetup benchmark

# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1      1826787 iterations per second for 256-bit key
PBKDF2-sha256    3477864 iterations per second for 256-bit key
PBKDF2-sha512    1576806 iterations per second for 256-bit key
PBKDF2-ripemd160  805357 iterations per second for 256-bit key
PBKDF2-whirlpool  661145 iterations per second for 256-bit key
argon2i       9 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      9 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm |       Key |      Encryption |      Decryption
        aes-cbc        128b      1104.9 MiB/s      2227.6 MiB/s
    serpent-cbc        128b       106.7 MiB/s       650.2 MiB/s
    twofish-cbc        128b       213.5 MiB/s       377.8 MiB/s
        aes-cbc        256b       860.5 MiB/s      2125.8 MiB/s
    serpent-cbc        256b       112.1 MiB/s       645.8 MiB/s
    twofish-cbc        256b       217.6 MiB/s       376.3 MiB/s
        aes-xts        256b      2040.3 MiB/s      2059.2 MiB/s
    serpent-xts        256b       564.5 MiB/s       559.3 MiB/s
    twofish-xts        256b       345.9 MiB/s       349.2 MiB/s
        aes-xts        512b      1962.4 MiB/s      1958.9 MiB/s
    serpent-xts        512b       578.6 MiB/s       567.6 MiB/s
    twofish-xts        512b       354.4 MiB/s       353.9 MiB/s

btt结果:

==================== All Devices ====================

            ALL           MIN           AVG           MAX           N
--------------- ------------- ------------- ------------- -----------

Q2Q               0.000016862   0.174177680   9.661069906         220
Q2G               0.000002024   0.019928804   0.807080182         165
G2I               0.000001052   0.001048819   0.003998630         165
Q2M               0.000000370   0.000001245   0.000002966          42
I2D               0.000004078   0.006283935   0.168370736         109
M2D               0.001225914   0.008880338   0.074362742          28
D2C               0.000251386   1.055605439   7.040268517         135
Q2C               0.000268619   0.905934448   7.126410344         207

BTT 情节

相关内容