Почему скорость удаления в Windows часто периодическая?

13

Просто ради интереса, что является причиной того, что время удаления часто бывает периодическим? В Windows 8 диалоговое окно удаления показывает скорость удаления на диаграмме.

Диалоговое окно удаления Windows 8

Если нет причин, конечно, это тоже будет ответ.

Данияр
источник
4
у вас есть 100 000 файлов в папке, все они имеют разные размеры, размерность элементов в секунду, поэтому чем меньше элементы, тем быстрее они будут удалены.
Ramhound
3
@ Ramhound, не похоже, что это связано с разным размером файла. Синусоидальная природа графика слишком регулярна.
GaTechThomas
1
Windows не обнуляет занятые блоки при удалении файлов. Удаление большого файла не должно занять больше времени, чем удаление маленького. Виновником является скорее всего количество предметов. Они во многих подпапках? При работе со многими файлами (большими или маленькими) возникают значительные накладные расходы - независимо от того, удаляете ли вы, копируете или перемещаете.
Абстраск
2
Кэширование какое-то? Куча запросов на удаление сбрасывается на пиках графика?
Джесси Слайсер
1
Я тоже это видел, иногда с гораздо большими волнами.
Моше Кац

Ответы:

5

Есть несколько причин:

  1. Непрерывность данных: NTFS реализуется там, где она последовательно записывает данные на диск, поэтому если вы редактируете файл - NTFS может потребоваться сохранить изменения в несмежном секторе на жестком диске. Это означает, что для удаления файла может потребоваться перейти с сектора 2 на сектор 100 000 (гипотетически, конечно), а затем вернуться, чтобы завершить файл. Затем он находит следующий сектор следующего файла для удаления и снова может повторить этот процесс.

  2. Типы данных. Допустим, вы удаляете папку, в tempкоторой могут быть большие и маленькие файлы. Некоторые из них будут быстро обрабатываться, а другие могут быть медленнее (будь то размер или сложность данных - т.е. сколько секторов необходимо обработать, чтобы завершить «элемент»)

  3. @Ramhound упомянул часть «элементов в секунду», что подтверждается вашим диалогом удаления ( Speed: 1.082 items/s). Таким образом, удаление большого файла, несмежного файла или маленького файла - все это играет роль в количестве элементов в секунду.

  4. Приоритизация ЦП: эта работа выполняется в тактовых циклах, поэтому вполне вероятно, что ваш ЦП может запускать другие процессы в течение цикла, что может повлиять на скорость (это предположение с моей стороны)

nerdwaller
источник
3
Windows / NTFS не обнуляет занятые блоки при удалении файлов. Большие или маленькие, смежные или несмежные, не имеют значения.
Абстраск
@abstrask - я не говорил, что это ничего не дает. Тем не менее, он должен перейти $BitMap(файл) к каждому кластеру и пометить его как свободный для использования (то есть «удаленный»). Открытие и редактирование файла (на любом уровне) требует ресурсов, а необходимость в нем прыгать - накладные расходы и может абсолютно замедлить работу. Если файл большой - редактирование занимает больше времени, если файл несмежный - поиск занимает немного больше времени.
nerdwaller
1
Каждый кластер представлен битом в файле $ Bitmap. Предполагая размер единицы выделения по умолчанию 4 КБ, ссылка на выделение для файла размером 100 КБ составляет около 3 байтов в файле $ Bitmap. Большой файл, скажем, 1 ГБ, занимает в файле $ Bitmap 32 КБ. Даже если бы $ Bitmap был сильно фрагментирован, жесткий диск должен был бы пропустить только 32 КБ / 4 КБ / cluster = 8 кластеров, чтобы пометить кластеры размером 1 ГБ для удаления. Да, для удаления большого файла нужно перевернуть больше битов, но это едва ли измеримо и определенно не приведет к большим визуальным ударам, показанным на скриншоте.
Абстраск