web-dev-qa-db-ja.com

Linuxでのファイルコピー操作が時間とともに遅くなるのはなぜですか?

12〜200 MBのファイルがあります。それらの1つを別のドライブにコピーするには、20秒かかります。それらすべてを一度にコピーしようとすると、最初に5分かかると表示され、その後数時間から数日で速度が低下し続けます。

XFCEのThunarを介してファイルをコピーしていますが、コマンドラインを使用して同様の問題があったことを覚えています。これが発生するのはなぜですか?ファイルを1つずつコピーする以外に、どうすれば修正できますか?

24
User not found

これはLinuxカーネル自体の既知の問題であり、古くから知られています。まだ誰もこの問題に取り組んでいません。

現在、速度を上げてから正規化するWindowsを使用することを除いて、修正または既知の回避策はありません。このバグは非常に優先度の高い問題であると思いますが、プログラマーは同じように感じていません。私がLinuxから追い出され始めているのは、このバグだけです。

参照:

27
Dave

転送速度を監視するには、rsyncを試してください。例えば:

rsync -PSauv sourcedir/* destdir/

大きなファイルとは対照的に、実際に転送速度が低下している場合は、他のいくつかの点を確認する必要があります。

  1. ディスクがI/Oバウンドの場合、問題が発生します。フラッシュドライブまたは外部USBデバイスに大量に書き込む場合、これがよく見られます。

  2. 両方のディスクをhdparm -Tt <device>でテストして、1つが本来よりも大幅に遅いか、またはI/Oの問題を引き起こす可能性のある他のデバイスよりも大幅に遅いかを確認します。

  3. dmesgの出力とSMARTステータスを確認して、明らかなディスクエラーがないことを確認します。ディスクが疑われる場合は、badblocks -nも検討してください。非SMARTドライブのエラー。

ディスクがスラッシュしたり、最適に動作しない理由はたくさんありますが、問題を測定できるようになるまでは、問題が何であるかわかりません。 :)

10
CodeGnome

また、ファイルコピープロセスはLinuxによって何らかの形でキャッシュされることも覚えておいてください。単一のファイル(200MBのファイルであっても)を取得して別の場所にコピーを開始すると、Linuxはファイル全体をかなりの確率でメモリにキャッシュし、新しい場所に書き込みます。次に、そのファイルを再度コピーすることを選択すると、最初のファイルはすでにキャッシュされており、おそらく「読み取り部分」全体がスキップされますが、他のファイルは最初に読み取られてからソースに書き込まれます/ destinations。この機能は、無限の転送速度や同様の奇妙さをもたらす可能性さえあるので、以前のキャッシュメカニズムによって無効にされる可能性のある測定を信頼しないでください。

2
Avio