
ルートディスク(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 1
35MB/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