非常に高速なブロックデバイス(高度なNVMe RAID、2 GB / s書き込み、4 GB / s読み取り)を備えた忙しいシステム/data
と非常に遅いデバイス(回転する8 TBディスク付きUSB HDD、50 MB / ss書き込み、60 MB / s読み取り)インストール、I / Oを犠牲にせずに/backup
プロセスの読み取りと書き込みをどのように制限できますか?/backup
/data
私が知る限り、問題はLinuxのみグローバルノブdirty_background_bytes
とdirty_bytes
.NVMeに対してこれらの制限を合理的な値(実際には約2GBおよび4GB)に設定すると、特定のプロセス(たとえばrsync
)がUSBに大量のデータを書き始めるまでスループットは問題ありません。この場合、dirty_background
受信USBデバイスはデータで埋められ、rsync
ページはダーティになりません。ただし、dirty_background
これはグローバルな制限であり、高速デバイスと低速デバイス間で共有されるため、高速デバイスに書き込むプロセスではかなりの速度が低下します。私は私が基盤をつかむことができることを知っています最も遅いシステムに接続されているデバイスを使用すると、大きな一時停止を防ぐことができますが、より速いデバイスのためにいくつかのスループットが犠牲になります。
dirty_background_bytes
シングルブロックデバイスに対応するデバイスはありますか?速度を遅くすることは本当に意味がありませんみんな他のプロセスの/data
速度低下とアクセスを防ぐために書き込みを処理します。/backup
cgroup
この作業を手動で行う方法があることを知っています(プロセスごとのI / Oを最大限に制限する方法は?)。ただし、各ブロックデバイスのサイズを変更してシステム全体の速度を遅くする前に、そのデバイスにアクセスするすべてのプロセスを制限する必要があります。プロセスが高速デバイスとスローデバイスの両方に書き込む場合、スローデバイスにデータが多すぎる場合にのみ速度が遅くなります。