web-dev-qa-db-ja.com

Windows 8デフラグツール?

Windows8のdefragコマンドには、次のようないくつかの新しいオプションがあるようです。

/K指定されたボリュームでスラブ統合を実行します。

これが英語で何を意味するのか誰か知っていますか?

18
user541686

このPDF これについての説明と新しいNTFS機能があるようです。

それは言う:

  • スラブの統合

    • ファイルを効率的にデフラグして、割り当てられたスラブの数を最小限に抑えます

    • スラブは、シンプロビジョニングされたボリュームの割り当ての単位です。

    • 次のプロパティIDを要求するIOCTL_STORAGE_QUERY_PROPERTYのサポートが必要です:StorageDeviceLBProvisioningProperty

      • ボリュームのスラブサイズを取得します
8
user541686

これがWindows8のデフラグツールのコンテキストで何を意味するのかを具体的に説明するものは何も見つかりませんでした。ただし、「スラブ統合」とは、一般に、同じ割り当てサイズに切り上げられるオブジェクトが一緒に配置されるようにオブジェクトを移動することを指します。

これを行うことの利点は通常、ごくわずかです。ただし、多数の小さなオブジェクトにアクセスすると、平均シーク時間が短縮される傾向があります。

3
David Schwartz

実際、平均シーク時間を短縮するために、同じサイズの多くのファイルの割り当てを調整するためにスラブが作成されているとは思いません。

私の意見では、ボリュームにスペースを割り当てる必要があるときに並列スレッドによる同時アクセスが多すぎると、ボリューム割り当ての同じ部分がロックされるため、大容量の割り当ての待ち時間を短縮するために使用されます。ビットマップ。大きなビットマップの処理を回避するために、ビット単位のサイズが同じビットマップフラグメントを使用してディスク上の連続領域を表す「スラブ」に分割できます(少なくとも1つ以上のクラスターを占有します。クラスターサイズが4KBの場合、ビットマップ内のクラスターは4K * 8 = 32Kの割り当て可能なクラスター、つまり128MB osストレージ。ボリューム内の実際のスラブサイズは33〜64に調整され、約33の同時スレッドが互いにブロックすることなくdistのビットマップにスペースを割り当てることができます)

したがって、スラブは、ボリュームのスペース割り当てを高速化するために使用されます。多くのファイルを作成するスレッドは、ロックを解除して別のスラブを試す前、または現在のスラブに少量を割り当てて試す前に、それ自体のスラブ内で最も頻繁に行うと想定しています。別の使用可能なロックされていないスラブ。次に、別のスレッドで現在使用されているスラブへのアクセスを同時に取得しようとしています。

これは、ディスク上の割り当てがボリューム全体に「分散」している理由を説明しています。また、これは、ボリュームを使用する多くのスレッド間の深刻なロックを回避するため、NTFSのMFTに他のスラブに属するフラグメントが少なくとも2つある理由を説明しています。 MFTを最適化することはできますが、NTFSボリュームでのブロッキングI/Oの実行を回避する必要がある同時割り当てのために、少なくとも1つのフラグメントが「予約領域」に保持されたままになります。

以前は、NTFSボリュームは複数のスラブに分割されておらず、I/O完了を待機しているカーネル内のスレッドブロッキングとスレッドスイッチが多すぎるため、パフォーマンスが大幅に低下していました(ビットマップでの割り当てが実際には非常に多い場合でも)ビットマップの興味深い部分のほとんどはすでにメモリにキャッシュされているため、高速でナノ秒かかります)。次に、ボリュームへの書き込みがフラッシュされてジャーナル処理されると、ジャーナルへの割り当てが原因で別のロックが発生するため、ジャーナルはボリューム上で別のスラブも使用するようになりました(可能な場合)。

しかし、NTFSが特定のサイズのファイル専用のスラブを持っているとは思いません。 NTFSは、データが削除され、割り当てられたサイズがあるしきい値を下回り、そのような2つのスラブをマージできる場合、内部でスラブをわずかに最適化します。

あなたはスラブのサイズについての情報を得ることができます:

fsutil fsinfo ntfsinfo c:

明らかに、スラブはパフォーマンスを目的とした調整パラメーターです。ただし、多くのサードパーティの最適化ツールはこの設定を無視し、最適な配置を使用しません。理想的には、ボリュームの各スラブにある程度の空き領域があるはずです。ただし、スラブが再割り当てされておらず、安定している必要があるファイルとインデックスでいっぱいである場合を除きます。絶えず作成およびリサイクルされる多くの小さな一時ファイルおよびトランザクションの場合、同時スレッドの数に応じて十分なスラブに配置し、ボリュームが次の場合に読み取る必要がある他のクラスターから離れすぎないようにする必要があります。ハードディスクまたはRAIDアレイ(これはSSDでは問題ではありません)。

スラブはリモートファイルシステムにも役立ちますが、最適なサイズを予測するのは困難です。反対側のスラブは、階層型仮想化ボリュームの異なるボリュームに対しては非常に小さく、配置戦略は非常に異なります。割り当てが仮想であり、異なる物理的な場所に再マップされることを前提としています。

レジストリ内の次のチューニングパラメータに関するMicrosoftからの情報がまだ必要です。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\SlabifyFunction]
MinimumReclaimSlabsMB      = REG_DWORD: 10240
MinimumReclaimSlabsPercent = REG_DWORD: 10
SlabEvictUpperBoundKB      = REG_DWORD: 204800
SlabEvictUpperBoundPercent = REG_DWORD: 20

マイクロソフトはまだ配置戦略の変更を検討しており、時間の経過とともに変更される可能性があるため、これらは意図的に文書化されていないままになっていると思います。それらはAPIによって公開されておらず、レジストリとNTFSドライバーの内部ソースコード実装にのみ証拠があります。

私たちが知っているのは、スラブがDEFRAG.EXEコマンドラインツールの「/ K」パラメータによって簡単に公開されることだけですが、詳細はあまり説明されていません。ただし、Windowsの初期インストール後(6回の再起動と測定後にBootvis最適化が行われる前でも)、/ K最適化によってパフォーマンスが大幅に向上していることは簡単にわかります。 SSDのトリミングに関連する/ Lパラメーターもあります。

1
verdy_p