高いIO負荷が原因でシステムが応答しないことを確認する

高いIO負荷が原因でシステムが応答しないことを確認する

ルートディスク(SanDisk SSD PLUS 240GB(UF5000RL))に高いIOがある場合、Fedora 38(WaylandのKDE)が数秒間応答しない理由を理解しようとしています。
ルートパーティションはLUKSのBtrfsです(詳細は質問の最後にあります)。

このような場合、デバイスに割り当てられたIOスケジューラがBFQ(FedoraのSATA SSDのデフォルトスケジューラ)であるにもかかわらず、追加のIOアクティビティは長い間処理されていないようです。一部のアプリケーション(Firefoxなど)は、IOを試行すると競合が発生します(一部の子プロセスが応答しない場合は監視機能がある可能性があります)。

この問題は、コンピュータの起動後にデスクトップにログインし、パネル、ウィジェット、一部のシステムトレイアプリケーションなどのコンテンツの読み込みを開始したときに発生する可能性があります。

最悪のシナリオは、特にSteamがDiablo 4のような大規模なゲーム(ストレージの観点から)を更新しようとするときです。実際、Steamは変更されたデルタのみをダウンロードし、新しいファイルを「ダウンロード」ディレクトリに結合するようです。
通常、ゲームと同じディスクでこれを行いますが、私の場合は十分なディスク容量がなく(〜60 GB以上必要です)、Steamはこの新しいファイルを自分のルートディスクに書き込むことにしました。
iostat 135MB/sから130MB/sまでの書き込みバースト表示中...

オンラインで調査した後、このblktraceツールを見つけて、Steamに別のDiablo 4パッチが到着したときにIOアクティビティを数秒間追跡することができました。以下は解析されたトレースですblkparse(個人データを含めないでください)。https://gist.github.com/tesfabpel/eb7d0f0f6cf64aa666e3e387bb771a21

Queue2Device、Device2Completion、およびQueue2Completion(以下と要約)をbtt表す3つのプロットを作成するために必要なデータを正常に収集しました。matplotlib

私の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 暗号化を高速化するためにいくつかのフラグ()を使用しましたが、問題は解決されませんでした。

結果は次のとおりです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プロット

ベストアンサー1

おすすめ記事