フォルダーの削除が並列化されないのはなぜですか?

フォルダーの削除が並列化されないのはなぜですか?

大きなフォルダーを Shift キーを押しながら削除すると、CPU 使用率が次のように表示されます。

ここに画像の説明を入力してください

すべてのボックスが使用されていません。これは非効率的ですか?

これは、分割統治法によって簡単に並列化できるように思えます。手動で半分のものを選択して削除し、次に残りの半分を選択して削除してみましたが、さらに多くのボックスがいっぱいになりました。

リサイクルは異なる動作を示すと聞きますが、自分でテストしたことはありません。

答え1

現代のファイルシステムは、書き込み中に常にデータの整合性が維持されるように努めます。以前は、書き込みが正常に完了するか、まったく完了しないかのどちらかであるという意味で、これを「アトミック」書き込みと呼んでいたのを聞いたことがあります。

ディスク キューとキャッシュを無視して、実際のディスクに一度に送信できるコマンドは 1 つだけです。削除操作では、ディレクトリ ツリーから項目を削除してスペースを空きとしてマークする最終書き込みの前に、複数の読み取り (ディレクトリのスキャンなど) などが発生します。

最新のジャーナリングの使用 (これにより、ディスク タスクが中断されたタイミングに応じて、タスクを前後にロールバックできます) と組み合わせると、ボトルネックは、ディスク コントローラーのタスク (読み取り/シーク/書き込み) を実際にキューに入れることにある可能性があります。

何かをごみ箱に移動することは、単にフォルダを移動するだけであり、大量のデータを不要としてマークするのではなく、単にフォルダ構造を修正するだけなので、何かを「削除」するために行う作業ははるかに少なくなります。ただし、ごみ箱を空にすると、再びディスク領域を解放する作業に戻ることになります。

答え2

この操作は CPU ではなくディスクによってボトルネックになります。ディスクが変更を保存できる速度よりも CPU を高速化することはできません。そのため、CPU はディスクがジョブを完了するまで待機してから、さらに作業を送信します。

この影響は、多数の小さなファイルを操作する場合に特に大きくなります。この場合、ファイルシステムのオーバーヘッドはファイル自体のサイズよりも大きいため、処理に異常に長い時間がかかるように見えます。

関連情報