私は非同期モードを使用して、Linuxシステムに搭載されたUSBディスクに大容量ファイルをコピーしました。これにより、比較的早くコマンドプロンプトに戻りますが、入力するともちろんsync
すべてをディスクに書き込む必要があるため、時間がかかります。
速度が遅いことはわかりますが、カウンタがゼロになるのを見ることができる場所はありますか?見ることは役に立ちませbuffers
んtop
。
答え1
すべてのデータが流れ、時間が経つにつれて数字が減少する/proc/meminfo
ことを観察してください。一部のデータはオーバーフローする可能性があります。これはすべてのデバイスの概要ですが、システム内の1つのデバイスが他のデバイスよりはるかに遅い場合は、キュー内のすべてのデバイスがこれに関連していることがよくあります。この数字は開始時に非常に大きく、終了時にほぼ同時にゼロに近づくことがわかります。対話型ディスプレイでこれを試してください。Dirty
Writeback
Dirty
sync
watch -d grep -e Dirty: -e Writeback: /proc/meminfo
通常のディスクでは通常は無視できますが、Writeback
USB転送パスでより頻繁に表示されるかどうかはわかりません。はっきりとした傾向なしに上り下りする場合なら数字だけ見てもわかりますDirty
。
答え2
/sys/block/<device>/stat
同期中にデバイスのファイルを表示できます。 9列には、デバイスで進行中の要求の数が表示され、同期が完了するとこの要求の数は0に減少します。
これをバイト数に変換する方法はわかりませんが、処理待機中の「ジョブ」の量がどれくらいになるかを大まかに知ることができます。
より統計.txt詳細については、カーネル文書のファイルを参照してください。 (私のシステムの対応するディレクトリには、読み書き要求が含まれているように見えるファイルもありますが、inflight
それに関する文書は見つかりません。)
答え3
Gregの答えを使用すると、sync
メモリのダーティブロックの状態を表示しながら、バックグラウンドで簡単に実行できます。
これを達成するには、次のコマンドを実行します。
sync & watch -n 1 grep -e Dirty: /proc/meminfo
これは前面で実行sync
中にバックグラウンドで呼び出されます。コマンドが完了するwatch
とsync
(ほぼダーティブロックサイズが0に達したとき)、次のような出力が得られます。
1] + 27260 done sync
これは、コマンドが完了し、+で終了できることを意味しますwatch
。CtrlC
答え4
次のコマンドを使用して、現在のブロックデバイスI / Oトラフィックを表示できます。ニモン、良い:
NMON=ld nmon -s1
(これはロードグラフとディスクグラフが1秒のリフレッシュ時間として表示されるように事前に選択します。これは、を押すのでnmon
はなくパラメータなしで実行してグラフを切り替え、リフレッシュ時間をデフォルトの2秒で短縮することもできます。リフレッシュ遅延が増加します。)l
d
-
+