Windowsブート後にのみLinuxで2TB NVMeが遅くなる

Windowsブート後にのみLinuxで2TB NVMeが遅くなる

私のSSDは2TB PCIe 3.0 x4 M.2 NVMe(韓国ブランドのMega Fastro MS200、ドイツで100ドル未満で販売されています)です。 Windows smi_nvme_flash_id.exeユーティリティによると、Intel 96L TLC NANDと2G DRAMキャッシュを備えたSM2262ENコントローラです。ファームウェアバージョン42AAT7GD。これは CPU に直接接続された内部ソケットにあります。

パフォーマンステストのために、数百GBの/dev/randomデータでいっぱいになりました。奇妙なことは、任意のデータを読み取る速度です。

PCの電源を入れてArchLinux(6.2.8カーネル)から直接起動すると、読み取り速度が非常に高速です。

  # echo 3 > /proc/sys/vm/drop_caches
  # cat /dev/nvme0n1p1 |
    ( pv -S -s 222G > /dev/null
      hexdump -C -n 32 )
222GiB 0:01:35 [2.34GiB/秒] [===================================== === === =>] 100%
 00000000  b2 ce c5 36 de 56 bd 05  1f 65 82 8e 1c 23 18 07  |...6.V...e...#..|
 00000010  03 0e b1 44 ec 6c 2c b0  64 47 d5 47 a6 59 cc 8b  |...D.l,.dG.G.Y..|
 00000020

> dev / nullの代わりにmd5sumを使用して、常に同じランダムデータを読み取ることを確認できます。 md5sumがdevnullより少し遅いだけです。

だから除いては大丈夫です。 Windows 10で再起動し、Linuxで再起動する場合。他の作業を行う必要はありません。まったく同じプロセスの読み取り速度が突然1GiB / s未満に制限されます。

222Gのデータは私のRAMをはるかに超えているので、キャッシュには関係ありません。温度は通常の範囲(負荷時最大80℃)内に維持されます。クーラーを追加してみようとするのに、効果があるか疑問です。上記のコマンドを連続して複数回繰り返すことができ、温度がすでに高い場合でも常に速く保たれます。 Windows(SSDには保存されていません)で再起動されたエントリがある場合は、冷却にかかる時間が必要です。

lspci 出力は変更されず、デバイスが PCIe 3.0 x4 モードで実行されていることを示します。 dmesg は変更されません。 /sys/block/nvme0n1/** 未変更のままです。 smartctl -a は変更されません。どこを見るべきか分からない。

再起動してもまだ遅いです。マシンをシャットダウンして再びオンにしてLinuxを起動すると、はるかに高速に戻ります。 Linuxで再起動し、迅速に保ちます。 Windowsを再起動し、Linuxを再起動しましたが、遅くなりました。

WindowsがLinuxで再起動した後も持続する制限の種類を設定できますか?それでは、コールドブートなしで初期化する方法はありませんか?

関連情報