コピーの数分後、それはますます遅くなります。どうして?
たとえば、20 MByte / secで始まり、それが終了すると@ 10 MByte / sになります。
さまざまなファイル、大、小など
更新:質問はさまざまなオペレーティングシステムに関するものであるため、「一般的な質問」です
コピーの数分後、それはますます遅くなります。どうして?
たとえば、20 MByte / secで始まり、それが終了すると@ 10 MByte / sになります。
さまざまなファイル、大、小など
更新:質問はさまざまなオペレーティングシステムに関するものであるため、「一般的な質問」です
回答:
この動作はフラッシュドライブに固有のものではなく、ハードドライブでも同様です。ほとんどのオペレーティングシステムとディスクが採用しているキャッシュメカニズムを使用して、小さな書き込みを高速化します。
表示される20mb / sは、ディスクキャッシュに書き込まれるデータです(通常は高速ですが、小さなメモリ)。このキャッシュがいっぱいになると、ディスクにフラッシュする必要があります-そして今、あなたはより遅いディスクによってボトルネックになっています。
例1:500 MBまでのデータをディスクにフラッシュする前にすばやくキャッシュできる大きなキャッシュ(優れたRAID5コントローラーなど)を備えたコントローラーがある場合、この効果は非常に顕著です。
例2:ファイルのコピーが「終了」すると同時にフラッシュドライブを引き出すと、再生中のキャッシュを確認できます。この時点で、ファイルはディスクとキャッシュに分割されます。したがって、オペレーティングシステムに関する限り、コピーは「完了」しますが、ディスクコントローラーはキャッシュに残っているものをディスクに書き込む必要があります。フラッシュドライブを元に戻し、ファイルを検査すると、すべてではないことがわかります。
免責事項:これらの例は、オペレーティングシステム/ディスク上で書き込みキャッシュを有効にしていないと機能しません。
さらに、ディスクキャッシュが機能していない場合は、断片化の影響である可能性があります。ディスクが一杯になると、連続した空きスペースが少なくなり、ファイルシステムはファイルを置く場所を見つけるために一生懸命働く必要があります。
キャッシングはこれの一部を引き起こしますが、それだけが要因ではありません。キャッシュが唯一の要因である場合、書き込み速度は数百MB / sからドライブの実際の書き込み速度まで急速に低下し、残りの書き込みの間そこにとどまると予想されます。ただし、これは、ディスクとの間で大量の転送を実行するときに観察したことではありません(ブートイメージの書き込みなど)。その代わり、私が観察するのは、操作全体の過程で速度が徐々に低下することです。
このスローダウンは、データの保存に使用されるフラッシュチップ上のデータの残留により、一部のブロックを複数回書き込む必要があるために発生します。
フラッシュチップ内には、書き込み可能なデータのブロックがあります。書き込み時には、コンピューターでできることは2つだけです。ブロック全体を消去するか、ブロック内のビットの一部(またはすべて)を0から1に変更できます。
ただし、これらのブロックの一部は他のブロックよりも優れており、特に低品質のフラッシュドライブでは、新しいデータを書き込む際に、書き込まれた直後に一部のビットが0に戻ることがあります。変わらない。したがって、ブロックに書き込む場合、OSはすべてのデータが正しく書き込まれたかどうかを確認する必要があり、そうでない場合は同じブロックに同じデータを2、3回書き込むことでブロックをやり直す必要がありますデータがスティックするまで。
そのため、コンピューターがフラッシュドライブに大量のデータを書き込んでいるとき、その方法について(完全に正確ではありませんが、十分に良い)説明を以下に示します。
コンピューターがドライブに書き込んでいるとき、ドライブに初めてブロックを書き込んでいる速度を報告しています。また、以前のブロックを同時に書き換える必要があるため、新しいブロックに使用できる合計スループットは、発生する必要がある書き換えの回数が増えると低下します。したがって、見かけの書き込み速度は時間とともに低下します。
ファイルがフラッシュUSBドライブまたはハードドライブのいずれかにドライブに書き込まれるとき、データが一致するかどうかを確認するためにデータが読み取られることはありません。それは永遠にかかります。書き込みの検証はハードウェアによって行われ(巡回冗長検査)、エラーが発生した場合、エラーが検出されたハードウェアからアプリケーションにポストバックされます。ストールが発生して速度が低下するのは(一時停止であっても)、デバイスが処理できるよりも速くCPUが書き込みを行うためです。これは、内蔵ハードドライブでは発生しません。Windows OSで実際に何が起こっているのかは決してわかりませんが、Linuxでは、USBハードウェアが続行をOKと言うまでCPUが一時停止することが実際にわかります