現在、Proxmox VEでサーバーをセットアップしています。すべてのドライブを暗号化したかったので、すべてのディスクにラックをセットアップし、ラックの上にLVMをセットアップすることにしました。
ここで、ddを使用して高速ドライブ(SSD)から低速ドライブ(HDD)にデータを転送しているときに、GB/sで非常に高速に起動します。そして減速します。次に、IO待機が最大10%待機し、システムの負荷が最大36まで増加することに気付きました。一部の仮想マシンは、その影響を受けてフリーズします。
さらにモニタリングを行ったところ、IO待機中_dmcrypt_write
_がIOの99%を使用していることがわかりました。そのため、グラフを取得するためにNetdataをインストールし、HDDが約120 150 MB /秒まで。
しばらくすると、kworkerは時間がかかりすぎて殺されます。調査の結果、_dirty_ratio
_および_dirty_background_ratio
_を低い値に調整しましたが、これにより速度は大幅に向上しましたが低下しました。約25 MB /秒。それは巨大なフリーズアップを防ぎましたが、それでもいくつかの遅れを引き起こします。これにより、HDD自体の書き込み速度も低下しました。 150 MB /秒で書き込む代わりに、HDDは50 MB /秒でのみ書き込むようになりました。
正直なところ、何も知りません。まだ見つけていない種類のキャッシュはありますか?または、Linuxの書き込み速度をドライブの書き込み速度に制限する方法はありますか?
私の唯一の目標は、速度を手動で制限したり、VMのフリーズを心配したりすることなく、AからBにデータをコピーすることです。
システム情報:
CPU:2x Intel Xeon E5-2650 v2
RAM:128 GB DDR3 ECC
OS:手動でインストールされたProxmox VEがインストールされたDebian 10
カーネル:Linux 5.3.18-3-pve #1 SMP PVE 5.3.18-3 (Tue, 17 Mar 2020 16:33:19 +0100) x86_64 GNU/Linux
私がddに読み取らせたSSDは、RAID 1の2つの東芝エンタープライズSAS-SSDです。HDDは、5400rpmのSATA HDDです(そのため...最速ではありません)。それらはRAID 1にもあります。
RAIDは、Dell PERC H710 mini(組み込み)によって管理されます。すべてのRAIDには、読み取りポリシーとして_Adaptive Read Ahead
_、書き込みポリシーとして_Write Through
_があります。
私はまた、奇妙に見えるダーティ/ライトバックのグラフに気づきました: 画像を見るためにクリック(初心者保護)
問題は高すぎるdirty_ratio
およびdirty_background_ratio
。 RAMは比較的大きいため、ページキャッシュも大きくなりました。ページキャッシュがいっぱいの場合、システムはIOをブロックし、フラッシュされるのを待ちます。これが高値の原因ですIO待機。
それらをはるかに小さい値(background_ratioに64 MB、dirty_ratioに4 GB)に減らすと、問題が解決しました。