web-dev-qa-db-ja.com

ディスク容量を空にするとコンピュータの速度が上がるのはなぜですか?

私はたくさんのビデオを見てきましたが、今ではコンピュータがどのように動作するかについてもう少しよく理解しています。 RAMが何であるか、揮発性メモリと不揮発性メモリ、およびスワッピングのプロセスをよりよく理解しました。また、RAMを増やすとコンピュータの速度が上がる理由もわかりました。

ディスクスペースをクリーンアップするとコンピュータの速度が上がる理由がわかりません。それですか?それはなぜですか?それは物事を保存するために利用可能なスペースを探すことと関係があるのでしょうか?それとも、何かを保存するのに十分な長さの連続したスペースを作るために物事を動かしながら?ハードディスクの空き容量をどれだけ空けておくべきですか?

190
Remi.b

HDDについての Nathanial Meekの説明 に加えて、SSDについては異なるシナリオがあります。

SSD上のどの場所へのアクセス時間も同じであるため、SSDは分散データに影響されません。通常のSSDアクセス時間は、10〜15msのHDDアクセス時間に対して0.1msです。しかし、それはすでにSSDに書き込まれているデータには敏感です。

既存のデータを上書きできる従来のHDDとは異なり、SSDはデータを書き込むために完全に空きスペースが必要です。これは、削除とマークされたデータを削除するTrimとGarbage Collectionと呼ばれる機能によって行われます。ガベージコレクションは、SSDの一定量の空き容量と組み合わせると最も効果的に機能します。通常15〜25%の空き容量が推奨されます。

ガベージコレクションが時間内にジョブを完了できない場合は、各書き込み操作の前に、データが書き込まれるはずの場所へのスペースのクリーンアップが行われます。これにより、各書き込み操作の時間が2倍になり、全体的なパフォーマンスが低下します。

これがTrimとガベージコレクションの機能を説明している優れた記事です。

22
whs

従来のハードディスクのどこかには、個々のビットとバイトが実際にエンコードされている回転する金属のPlatterがあります。データがPlatterに追加されると、ディスクコントローラは最初にそれをディスクの外側に格納します。新しいデータが追加されると、最後にディスクの内側に向かって移動するスペースが使用されます。

これを念頭に置くと、ディスクがいっぱいになるとディスクのパフォーマンスが低下する2つの影響があります。シークタイム )回転速度

シークタイムズ

データにアクセスするには、従来のハードディスクは読み書きヘッドを正しい位置に物理的に移動する必要があります。これには「シーク時間」と呼ばれる時間がかかります。製造元はディスクのシーク時間を公開していますが、通常は数ミリ秒です。それほど多くは聞こえないかもしれませんが、コンピュータにとってそれは永遠です。タスクを完了するために異なるディスクの場所のlotに読み書きする必要がある場合(これが一般的です)、それらのシーク時間によって、著しい遅延または待ち時間が発生する可能性があります。 。

ほとんど空のドライブは、ほとんどのデータが同じ位置、またはほぼ同じ位置、通常は読み取り/書き込みヘッドの静止位置近くの外側のEdgeにあります。これにより、ディスク全体でシークする必要性が減り、シークにかかる時間が大幅に短縮されます。ほとんどいっぱいになったドライブは、より頻繁にそしてより長い/より長いシーク動作でディスクを横切ってシークする必要があるだけでなく、同じセクタ内に関連データを保持するのに問題があり、さらにディスクシークが増えます。これは断片化されたdataと呼ばれます。

ディスク領域を解放すると、断片化解消サービスが断片化ファイルをより迅速にクリーンアップできるだけでなく、ファイルをディスクの外側に移動できるため、シーク時間が短縮され、シーク時間が短縮されます。

回転速度

ハードドライブは固定速度で回転します(通常、コンピュータの場合は5400rpmまたは7200rpm、サーバーの場合は10000rpmまたは15000rpm)。単一ビットを格納するために、ドライブ上に一定量のスペース(多かれ少なかれ)もかかります。一定の回転速度で回転するディスクの場合、ディスクの外側はディスクの内側よりも速い線形速度を有する。これは、ディスクの外側の端部付近のビットがディスクの中央部付近のビットよりも速い速度で読み取りヘッドを通過して移動することを意味します。内側。

ほとんど空のドライブでは、ほとんどの時間がディスクの最外周のエッジに近いビットにアクセスするのに費やされます。ほとんどいっぱいになったドライブは、ディスクの遅い方の内側部分に近いビットにアクセスするのにより多くの時間を費やすでしょう。

繰り返しになりますが、ディスク領域を空にすると、デフラグサービスでデータをディスクの外側に移動できるため、読み取りと書き込みが高速になり、コンピュータの処理速度が向上します。

時にはディスクが実際にはリードヘッドには速すぎる速度で動くことになります、そしてこの影響はリードヘッドが追いつくことができるように外側のEdgeの近くのセクターが互い違いに書かれているので乱れて書かれるので減少します。しかし、全体的にこれは成り立ちます。

これらの影響はどちらも、ディスクの早い方の部分でデータをまとめてグループ化し、必要なときまで遅い方の部分を使用しないというディスクコントローラによるものです。ディスクがいっぱいになると、ディスクの遅い部分でより多くの時間が費やされます。

効果は新しいドライブにも適用されます。他の点では同じですが、新しい1TBドライブは、新しい200GBドライブよりも高速です。1TBは、ビットをより近くに格納しているため、内側のトラックまでいっぱいになることはないからです。ただし、製造業者が1TBサイズに達するために複数のプラッタを使用し、1TBシステムを200GBに制限するためにより小さいプラッタを使用し、1TBプラッタを200GBに制限するためにソフトウェア/ディスクコントローラの制限を使用する場合があります。 200GBのドライブとして不良セクタがたくさんある1TBドライブから部分的に完成した/欠陥のあるプラッタがあるドライブを売る、あるいは売る。

その他の要因

ここで注目に値するのは、上記の効果がかなり小さいことです。コンピュータハードウェアエンジニアは、これらの問題を最小限に抑える方法に多くの時間を費やしており、ハードドライブバッファ、スーパーフェッチキャッシング、およびその他のシステムのようなものはすべて、問題を最小限に抑えるために働いています。十分な空き容量があるhealthyシステムでは、気付くことさえないでしょう。さらに、SSDはまったく異なるパフォーマンス特性を持っています。ただし、その効果は存在し、ドライブがいっぱいになるとコンピュータの速度は遅くなります。ディスク容量が非常に少ないunhealthyシステムでは、これらの影響により、断片化したデータ間でディスクが絶えず往復して解放され、解放されるディスクスラッシング状態が発生する可能性があります。ディスク容量を増やすことでこれを解決できるため、より劇的で目立った改善が見られます。

さらに、ディスクにデータを追加するということは、インデックス作成やAVスキャン、デフラグプロセスなどの他の操作が、バックグラウンドでmoreで実行されていることを意味します。または以前と同じ速度に近い。

最後に、最近のディスクパフォ​​ーマンスはhuge全体のPCパフォーマンスの指標となります... CPU速度よりもさらに大きい指標です。ディスクスループットがわずかに低下したとしても、実際には全体的にPCのパフォーマンスが低下しているように見えます。これは、ハードディスクのパフォーマンスがCPUとメモリの改善に追いついていないため、特に当てはまります。 7200 RPMディスクは、10年以上前からデスクトップの標準となっています。これまで以上に、その伝統的な回転ディスクはあなたのコンピュータのボトルネックです。

12
Joel Coehoorn

他のすべての答えは技術的に正しいです - しかしながら、私はいつもこの簡単な例がそれを最もよく説明するのを見つけました。

ソートするのは、スペースがたくさんある場合は本当に簡単です...スペースがない場合は難しい.. コンピュータにもスペースが必要です

この古典的な " 15パズル "はトリックで時間がかかります。 15オーダー。

hard 15 puzzle

しかし、スペースがもっと大きければ、10秒以内にこのパズルを解くことができます。

easy 15 puzzle

これまでこのパズルで遊んだことのある人なら誰にでも…アナロジーを理解することは自然に起こるようです。 ;-)

6
scunliffe

回転する機械式ハードドライブ上のディスク容量が非常に少ない状態でかなりの時間にわたってコンピュータが使用されていた場合、ファイルの断片化が進むにつれて一般的に遅くなります。断片化が増加すると、読み取りが遅くなります - 極端な場合には非常に遅くなります。

コンピュータがこの状態になると、ディスクスペースを解放しても実際には問題は解決されません。また、ディスクを最適化する必要があります。コンピュータがこの状態になる前は、スペースを解放してもスピードは上がりません。断片化が問題になる可能性を単に減らすでしょう。

断片化はSSDの読み取り速度にほとんど影響を与えないため、これは回転するハードドライブを搭載したコンピュータにのみ適用されます。

5
RomanSt

フラッシュディスクは、いっぱいになるか断片化されると確実に遅くなる可能性がありますが、速度低下のメカニズムは物理的なハードドライブで発生するものとは異なります。典型的なフラッシュメモリチップはいくつかの消去ブロックに分割され、各消去ブロックは多数(数千ではないにしても)の書き込みページからなり、3つの主な操作をサポートします。

  1. フラッシュページを読みます。
  2. 以前は空白のフラッシュページに書き込みます。
  3. ブロック上のフラッシュページをすべて消去します。

理論的には、フラッシュドライブへの各書き込みでブロックからすべてのページを読み取り、バッファ内のページを1つ変更し、ブロックを消去してからフラッシュデバイスに書き戻すことは可能ですが、そのようなアプローチは非常に困難です。スロー;消去が開始されてからライトバックが完了するまでの間に電力が失われた場合も、データが失われる可能性があります。さらに、ディスクの頻繁に書き込まれる部分は非常に早く消耗します。たとえば、FATの最初の128セクタが1つのフラッシュブロックに格納されている場合、それらの全セクタへの書き込みの合計数が約100,000に達するとドライブは停止します。約16,384のFATエントリを保持します。

上記のアプローチはひどく機能するので、driveはそれに空白のページを識別させ、そこにデータを書き込み、そしてどういうわけか問題の論理セクタがその場所に格納されているという事実を記録するでしょう。十分な空白ページがある限り、この操作はすばやく続行できます。しかし、空白ページが足りなくなった場合、ドライブは比較的少数の「ライブ」ページを含むブロックを見つけ、それらのブロック内のライブページを残りの空白ページのいくつかに移動し、古いコピーを「」としてマークする必要があります。デッド";そうすることで、ドライブは「デッド」ページのみを含むブロックを消去できるようになります。

ドライブが半分しか使用されていない場合は、ライブページが半分しか使用されていないブロックが少なくとも1つ存在することになります(そして、ほとんどまたはまったく含まれないブロックが存在する可能性が非常に高くなります)。各ブロックが256ページを保持し、最小フルブロックが64のライブページを保持する場合(中程度の悪い場合)、ドライブは要求された192セクタ書き込みごとに64の追加セクタコピーと1ブロック消去を実行する必要があります。各セクタ書き込みの約1.34ページ書き込みと0.005ブロック消去)。最悪の場合でも、128セクタの書き込みごとに128の追加セクタコピーとブロック消去が必要になります(2ページ書き込みと0.01ブロック消去の1書き込みあたりの平均コスト)。

ドライブの空き容量が99%で、空き容量が最も少ないブロックに248/256のライブページがある場合、8セクタ書き込みごとに248ページの追加書き込みとブロック消去が必要になるため、1書き込みあたり32ページ書き込みと0.125ブロックのコストが発生します。消去 - 非常に深刻な減速。

ドライブにどれだけの「追加」ストレージがあるかによっては、物事をそれほど悪くすることはできないかもしれません。それにもかかわらず、ドライブが75%いっぱいになった時点でも、ワーストケースのパフォーマンスは50%いっぱいになったときのワーストケースのパフォーマンスの2倍以上悪いことがあります。

4
supercat

私の過度に単純化された答え(厳密にあなたの主な混乱に制限されている)は短くて甘いアプローチに従うと:

あなたの限り

  1. OSはページング/スワッピング/ etcのようなその義務を果たすのに十分な(最悪の場合のシナリオ用の)スペースを持っています。
  2. 他のソフトウェアにも、それぞれのニーズに十分なスペースがあります。
  3. ハードディスクが最適化されています。

そうすると、80%の空きディスクと30%の空きディスクのパフォーマンスの違いを見分けることができなくなり、新しいデータを保存する以外のことは何も心配する必要がなくなります。

現在、使用可能なスペースが不足している可能性があるため、より多くのストレージを必要とするものはすべて、パフォーマンスの低下につながります。

もちろん、ツールによるディスククリーニングは以下のように優れています。

  1. 一時ファイルは、貴重なディスク容量を確保するために定期的に消去する必要があります。
  2. 古いログファイルはスペースの無駄遣いに他なりません。
  3. インストールした/アンインストールしたソフトウェアの残り物は非常に厄介です。
  4. あなたがあなたのオンラインプライバシーを重視するならば、クッキーはクリアされなければなりません。
  5. 無効なショートカットなど.

これらすべて(およびその他の多く)の理由は、これらのすべてが適切なビットセットを見つけるときにOSを混乱させ続けるため、パフォーマンスが低下することにつながります。

3
Htaank

あなたはほとんどそれを釘付けにしました。 SATA HDDは半二重通信媒体と見なすことができます(つまり、一度にデータの送受信しかできません。両方ともできません)。そのため、ドライブを長時間使用できない場合は、書き込み可能な場所を探します。に、それはあなたにどんなデータも読むことができません。経験則として、この理由でドライブを80%以上の容量にロードしないでください。いっぱいになるほど、ファイルが断片化される可能性が高くなり、読み取り要求中にドライブが拘束されます(したがって、書き込み要求がブロックされます)。

これらの問題を解決するためにできることがたくさんあります。

  • 保存したデータ量を減らし、定期的にドライブを最適化してください。
  • フラッシュベースのストレージに切り替えます。
  • OSとは別のドライブに大量のデータを保存してください。
  • などなど….
3
Nathanial Meek

私が言及していない回転ドライブへの1つの影響:アクセス速度とデータ転送速度はディスクの異なる部分で異なります。

ディスクは一定の速度で回転します。ディスクの外側のトラックはより長く、したがって内側のトラックよりもトラックごとにより多くのデータを保持できます。ドライブが最も外側のトラックから100 MB /秒を読み取ることができる場合、最も内側のトラックの速度は50 MB /秒未満になります。

同時に、ディスクの外側のトラックの1 GBのデータ間のトラックは、最も内側のトラックの1 GBのデータ間よりも少なくなります。したがって、平均して、外側に保存されたデータの場合、最も内側のトラックのデータよりもヘッドの移動が少なくて済みます。

可能であれば、OSは最も外側のトラックを使用しようとします。もちろん、ディスクがいっぱいの場合は不可能です。データを削除すると、転送速度が速いところでスペースが使用可能になり、処理が速くなります。同じ理由で、スピードが必要な場合は(必要に応じて)、必要以上に大きい回転ハードドライブを購入する必要があります。これは、ドライブの最速部分のみを使用することになるためです。

2
gnasher729