/dev/mydisk
機能スタックに基づくデバイスであるLUKS暗号化ソフトウェアRAID-1があります。
私は時々/dev/mydisk
外部USBディスクにコンテンツをバックアップしますが、それ自体はLUKSを使用して暗号化されます。いくつかの100GiBを転送する必要があります。これは単純ではdd
なく再帰的ですcp
。 (まだuseに変更する必要がありますrsync
。)
バックアップが開始されてからしばらくすると、システム全体の相互作用が大幅に低下しました。 KDE インターフェイスは明らかにメモリ要求が承認されるのを待っています。プロンプトが出るまで2分待つのは珍しいことではありません。ネットワークI / Oを待つのにも多くの忍耐が必要です。これは、起動後に不明な目的で各zipを解凍し、各ファイルの内容を索引付けすることを決定したときに発生する状況と似ていますbaloo
。つまり、システムが沼地のカヌーになります。
カーネルはすべてのRAMをコピープロセスに提供しているように見え、機会があればそれを対話プロセスに再提供しないようにします。 RAMも悪くありません:23GiB。万が一に備えて11GiBのスワップスペースもありますが、常に数MiBが占めています。
コピープロセスの前に対話型プロセスにRAMを確保させることはできますか?それでは、どうすればいいですか?
バージョン情報:
- これはFedora 29(4.19.15-300.fc29.x86_64)システムですが、以前のFedoraシステムでもこの問題があったことがわかります。
- KDEバージョンは「KDEフレームワーク:5.53.0」に基づいています。
修正する
今まで全員の回答ありがとうございます!
何を探すべきかを知ると、何かが見つかります。
私が選んだもの:
- 2018-10: U&LSE の項目は明らかに私の問題に関するようです。外部ディスクで過度の読み取り/書き込み操作を実行すると、システムが遅延します。。質問者が使用した
dd
解決策は、フラグを使用してoflag=direct
ページキャッシュをバイパスすることです。 - 2018-11:U&LSE書き込み速度の低下という比較的一般的な問題について2013年に「USBフラッシュドライブの停止」の問題が発生したのはなぜですか?既存の「I / Oダーティスロットリングなし」コードがこの問題を解決できないのはなぜですか?。これは非常に混乱しており、私たちは噂と現象に対抗する必要があります。
- 2013-11:LWM.netのJonathan Corbet:有害なUSBスティックがかかる問題。 「2013年報告問題」の記事です。しかし、2018-11年の質問に対する回答では、その記事は偽であり、誤った前提に基づいていることがわかりました。
- 2011-08:強制削除方法のU&LSEエントリページキャッシュ、応答性を復元できます。キャッシュを消去するには、/proc/sys/vm/drop_caches を設定します。
- 2016年1月:サイズ制限方法のU&LSE項目バッファキャッシュ:Linuxでのバッファキャッシュサイズの制限
- I / Oスケジューラと書き込みストレージの制限について説明します。
- 2018-10: この問題の U&LSE:「書き込み保存の制限」は「USBディスクの固定問題」の解決策ですか?
- 2016-04:LWM.netのジョナサン・コベット:迷惑なバックグラウンド書き込みの保存を減らします。。
- 私も検討しています:2017-05:I/OスケジューラのチューニングによるLinuxシステムのパフォーマンスの向上、2009年6月:Linux I/O スケジューラの選択
I/O チューニングを処理できるプロフェッショナルなシステムがまだない理由は何ですか..?
答え1
nice -n 19
プロセス(CPUに低い優先順位を与える)とおそらくionice -c 3
(アイドル時のI / O)をバックアップします。
rsyncも大幅に改善されます(毎回100 Gbをコピーするわけではありません)。たとえば、私のバックアップスクリプトは次のようになります。
SOURCE=/whatever/precious/directory
DESTINATION=/media/some_usb_drive/backup
nice -n 19 rsync --verbose --archive --compress --delete --force --recursive --links --safe-links --rsh ssh --exclude-from=$EXCLUDEFILE $SOURCE $DESTINATION
# or
nice -n 19 ionice -c 3 rsync --verbose --archive --compress --delete --force --recursive --links --safe-links --rsh ssh --exclude-from=$EXCLUDEFILE $SOURCE $DESTINATION
(exclude-from は、.cache ディレクトリ、.o ファイルなどを防ぐために使用されます.)
答え2
確認してみると、文書には記載されていませんが、nocache
通常書くことができなければならない。小さなファイルをコピーするときは、fdatasync()
各ファイルを呼び出す必要があるため、実行が遅くなります。
fdatasync()
(バルク/コールの影響を減らすには、Linux固有の機能を使用してください。fsync()
dpkg
IO およびキャッシング効果に関する関連回答で、これがどのように機能するかについての説明「[1]」を参照してください。。ただし、これをnocache
deferに変更する必要があり、close()
場合によっては望ましくない副作用がある可能性があります。 :-(.)
別のアイデアは、を使用してcgroupでレプリケーションプロセスを実行し、systemd-run
メモリ消費制限を設定することです。 cgroup メモリコントローラはキャッシュとプロセスメモリを制御します。systemd-run
このコマンドの良い例が見つかりません(誰かが1つを提供することができます:-)。