web-dev-qa-db-ja.com

ハードドライブを実際のサイズよりも小さいパーティションに分割すると、客観的にパフォーマンスが向上しますか?

私は2016年に80ギガバイトのHDDで作業していましたが、実際にはほとんど気の利いた感じがしませんでした。そして1TBのHDDともっと大きいRAMともっと速いCPUを搭載した新しいラップトップを購入した後 - HDDは実際には私の古いものよりずっと遅いと感じました。

だから最近、私は1TBのHDDを80GBのプライマリパーティションにパーティションし、残りのスペースは未割り当てのままにしておくことにしました。OSとメインのWebブラウザ以外には何も必要ないからです。

それをした後 - それは実際には何らかの理由で以前よりもはるかに快活に感じました。ファイルマネージャは非常に速く実行され、HDDの全体的なパフォーマンスはちょうどずっと良い感じになります。それが単なるプラセボなのか、それともSSD時代以前に起こっていた合法的なものなのかを知りたいのです。

私は「ディスクショートストローキング」について何かを読んだが、それが私がしたことと同じであるかどうかは定かではない。たぶん私のBIOは最初に端のスペースを分割しますか?あなたの説明を知りたいのですが。

21
莫愁姓

はい、あなたがしていることは「ショートストローク」と呼ばれます。

ドライブのヘッドの動きを制限することで、シーク性能を向上させます。ハードドライブのパフォーマンスは主に次の3つの要素によって制限されます。シーク時間(ヘッドを目的のシリンダに出し入れするのにかかる時間)、回転待ち時間、そしてもちろん実際のデータ転送速度。

原則

最近のほとんどの3.5インチハードドライブの平均シークタイムは9〜10ミリ秒です。 「シーク」が行われると、ドライブは目的のセクタの先頭が頭の下に来るのを待つ必要があります。平均回転待ち時間は、ドライブが1回転するのにかかる時間の半分です。 7200 rpmのドライブは、毎秒120回転で回転します。そのため、回転には1/120秒かかります。したがって、1/2回転 - 平均回転待ち時間 - は1/240秒、つまり4.2ミリ秒です。 (これはevery7200 rpmのハードドライブでも同じです。)したがって、データ転送を開始する前に平均約13ミリ秒かかります。

データ転送速度はドライブの仕様が言うものは何でもです。最近のドライブでは、これはほとんどの場合物理的なインターフェースよりもいくぶん低くなります。 SATA 3、をサポートします。 I/O操作のデータ転送部分は一般的に最短期間の部分であり、現代のインターフェースではほとんど無視できることに注意してください。古いATA33ドライブでも、4KiBの転送には1.2ミリ秒しかかかりませんでした。

シーク時間仕様は、さまざまなヘッド移動距離に対して可能なシーク時間の平均です。あるシリンダーから隣接するシリンダーへのシークが、最も内側から最も外側へのシークよりもはるかに短くなることがわかります。 (「シリンダー」は、単一のヘッド位置からアクセス可能なすべてのトラックの集まりです。)これらの両方とも異例の状況です。 HDパフォーマンスの前提は、アクセスされるデータがドライブ全体にかなりランダムに分散されることであるため、通常の約9または10ミリ秒のシーク時間は、さまざまなシーク距離の平均です。最も詳細なスペックシートには、平均値に加えて、シリンダー間(しばしば「トラック間」と表示されている)シークタイムと最大(エンドツーエンド)の両方を記載しています。

大規模な「順次」転送でドライブベンチマークが実行されているのを確認すると、シーク時間と回転待ち時間の両方を最小化し、ドライブのオンボードキャッシュの有効性を最大化するデータアクセスパターンでテストが行​​われています。すなわち、単一の大きなファイルを最初から最後まで順番に読むこと。ファイルが1ブロックの連続した範囲を占有している状態で、一度に64 KiB。

では、ショートストロークはどのように機能しますか?

ドライブよりもはるかに小さいパーティションを作成し、それを使用するだけで、すべてのデータを狭い範囲のシリンダー(ヘッド位置)に収めることができます。これにより、最大可能シーク時間が短くなるため、平均が小さくなります。回転待ち時間や転送速度には役立ちません。

もう1つの方法は、ドライブの使用量を最大容量のシリンダーに抑えることです。現代のHDは "ゾーンビットレコーディング"を使用しています。つまり、外側のトラックは内側のトラックよりもトラックあたりのセクタ数が多いということです。そのため、データが外側のシリンダーにある場合は、ヘッドをそれほど動かさなくてもより多くのデータにアクセスできます。

それは本当に機能しますか?

さまざまな技術愛好家のサイトがこれをテストしました。たとえば、 Tom's Hardware でこの記事を参照してください。その結果は印象的です。1秒あたりのI/O率をほぼ2倍にします。

しかし、これは大容量のハードドライブを購入し、ドライブの容量のごく一部を使用することによって行われました。これにより、GBあたりのコストが大幅に増加します。

ただし、回避策があります。あなたは決してスピードの利益を得るためにドライブの残りを使う必要はありません。あなたのシステムがあなたのメインパーティションを頻繁に使用しているとき、あなたはただそれを毎日の使用から締め出さなければなりません。私たちのほとんどは、私たちがアクセスするファイル(OS、アプリ、およびアプリが動作するデータ)と、アクセスすることがそれほど多くない大量のデータを持っています。たとえば、残りのドライブをある種のアーカイブストレージ、または音楽やビデオなどのマルチメディアファイルに使用できます。メディアの再生は一般的にまれで、単一のファイルへのシーケンシャルアクセスであり、あなたは通常そのときそのマシンで他のことをあまりしていません。したがって、この方法でドライブを使用しても、すべてが1つの大きなパーティションに分散されている場合よりもメディアの再生が悪くなることはありません。メディアデータを含まない作業では、短ストロークのメリットが得られます。

しかし良い考えですか?

一方、...THで実行されたテストは総合的なベンチマークであり、それらの結果を得るために非常に高い割合のディスク容量を破棄しました。現代のオペレーティングシステムは、HDパフォーマンスを最適化しようとするためにかなりの仕事をしています。一例として、Windowsの「ファイル配置の最適化」があります。これについては、この回答に対するコメントで説明しています。そして「短いストローク」はこれをあまり効果的にしないでしょう。誰かが総合的なベンチマークで印象的な結果を出したからといって、「ショートストローク」が必ずしも良いことであるとは限りません。

考えてみましょう。最近の1 TBハードドライブの価格は約50ドルです。しかし、あなたはそれを80 GBしか使っていません。 OSとブラウザだけが必要だと言う…まあ、63ドルでSamsung 128 GB SSDを手に入れることができ、「ショートストローク」に関係なく、80 GBとFARの優れたパフォーマンスの半分のスペースをあなたに与えることができるHDです。あるいは50ドルで、240 GBの容量のSanDisk SSDを手に入れることができる。それは50ドルの1テラバイトのハードドライブのほとんどすべてを使わないよりもいいやり方のようです。

ところで

ところで:あなたの "BIOS"(あるいはそれに関するUEFI)はパーティションを作成せず、パーティションがどこにあるかとは何の関係もありません。それはオペレーティングシステムのパーティショニングユーティリティ次第です。私が今まで聞いたことのあるすべてのOSは、最初に外側のシリンダーを使用します。たとえば、Windowsのディスク管理ユーティリティでは、各ディスク内のドライブパーティションのグラフィック表示は、一番外側のシリンダが左側にあるレイアウトを示しています。 AOMEIディスクパーティショニングユーティリティも同じです。

側近 - 実話:5.25インチのフォームファクタのハードドライブが数十万MBのサイズになっていた当時、CDCと呼ばれる会社は "Wren"シリーズと呼ばれるドライブのラインを持っていました。 (この名前は、少し前の時代の物理的に大きい富士通の「イーグル」ドライブの間違いではないことは間違いありません)。容量の約90%、コストの20%増加、およびミリ秒程度の平均アクセス時間の短縮。いくつかの実験の後、「WrenRunner」はドライブのファームウェアで最初と最後の数トラックがロックアウトされた「Wren」であることは明らかでした。つまり、私たちはその用語を使っていませんでしたが、あなたは "短いストローク"によってより安いレンから同じ性能と容量を得ることができました。私の友人は配給業者であり、顧客に「より少ないお金を使う - ただレンを買うだけでそれを全部使わないように」と言うことで顧客と良いカルマを作った。

29
Jamie Hanrahan

多くの要因がありますが、厳密に正規の答えがあるかどうかはわかりません。ただし、回転しているディスクの外側に近い小さなパーティションでは、データが断片化されていない限り、シークとシーケンシャル転送が高速になる可能性があります。

回転するディスクでは、外側の円柱は内側の円柱よりも多くのセクターを持ち、より速く回転します。最近のファイルシステムの多くは、断片化を減らすためにファイルのセクターを連続して配置しようとしています。これは、大きなパーティションでは時間の経過とともに内部シリンダーがますます使用されることを意味します。

パーティションが小さければ小さいほど、ファイルシステムはより多くのデータを外側のシリンダーに配置しなければならず、断片化されていてもデータが読み取りヘッドの下を速く移動する可能性があります。

hdparmのようなLinuxツールを使用して、さまざまなパーティションサイズでランダムアクセスとシーケンシャルパフォーマンスについてドライブをテストすることができます。実用的な答え以上のものが必要な場合は、断片化を考慮に入れます。

ドライブの用途にもよりますが、ディスク容量を無駄にすることによるメリットは、無駄に相殺される可能性があります。ランダムアクセスやフラグメンテーションのパフォーマンスが重要な場合は、長期的にはソリッドステートドライブ(SSD)への切り替えの方がおそらく理にかなっています。

3
CodeGnome