概要
Linuxを構成して、ローカルディスク/ファイルシステムからの読み取りとネットワーク共有への書き込みの両方を同時に行うことができます。アイドル?
1つの操作だけを実行してから、もう1つの操作を交互に実行する代わりに、読み取りと書き込みを同時に行う方がはるかに高速です。
詳細
LinuxマシンのローカルディスクからNASデバイスに大量のデータを移動しています。
rsync
基本的に、CIFSマウントであるにコピー/srv/data
するために使用しています/mnt/nas
。
最初は100MB /秒で読み取り、100MB /秒(ギガビットネットワークの制限)でNASに書き込み、読み取りと書き込みの両方が同時に行われました。
しかし、数時間後、ローカルディスクから読み取りを行っていることがわかり、NASに書き込み中に読み取りを停止し、NASに書き込むデータがなくなると、ディスクから読み取りを再開します再び。ディスクの読み取り中はネットワークがアイドル状態になり、ネットワークの使用中はディスクがアイドル状態になります。
言うまでもなく、200MBを読み取ってから200MBを書き込むと、その200MBを同時に読み書きするよりもはるかに時間がかかります。
一度に1つの操作だけを実行して読み取りと書き込みを交互に行うのではなく、読み取りと書き込みの以前の動作を同時に維持するようにカーネルを構成するにはどうすればよいですか?
いくつかの観察:ローカルディスクが100 + MB / secで読み取る場合、すべてが並行して正常に行われているように見えますが、ディスクがスローダウンすると(何らかの理由で20MB / secだけになっているようです)、この読み取り/書き込みは切り替えが発生するようです。
私はまた、実行することができますsync
が入れて書き込みが(減少速度で明らかにかかわらず)読み込みと並行して起こって取得するには、手動で数秒ごとsync
にwhile
それが正しい解決策のように見えるしていません5秒ごとに実行されるようにループを...
カーネルは約1GBのデータをキャッシュし、ネットワーク上で可能な限り高速に書き込みます-これは問題ありません-データの送信中に低速ディスクの読み取りを停止する必要がある理由がわかりません通信網。