Żeby tylko podpalić pytanie, wykonałem na niewymownej maszynie wirtualnej następujące kroki:
- Uruchom dysk SystemRescueCD i zamontuj partycję Windows
- Wyświetl wszystkie pliki na dysku do pliku dziennika (mniej niż minutę)
- Uruchom ponownie w systemie Windows
- Pozwolić
cleanmgr
wykonywać swoje zadania i wziąć pod uwagę czas (więcej niż osiem godzin)
- Uruchom ponownie na SystemRescueCD i zamontuj partycję Windows
- Wyświetl wszystkie pliki na dysku do innego pliku dziennika (mniej niż minuta)
- Zresetuj niezmienną maszynę wirtualną
- Uruchom ponownie w systemie Windows
- Wykonaj FOR / F ..., aby usunąć takie pliki w wierszu polecenia administratora (cmd) i zanotuj czas (mniej niż pięć minut)
Uwaga: Uruchomiłem ponownie na Linux SystemRescueCd tylko po to, aby móc wyświetlić listę wszystkich plików, także tych przeglądanych przez Windowta, a także aby zrobić takie spisanie tak szybko, jak to możliwe (bez sprawdzania acl itp.).
Pamiętaj też, że na cleanmgr
liczę tylko czas po zakończeniu wyszukiwania (samo wyszukiwanie również zajmuje więcej niż sześć godzin).
Dlatego usuwanie plików nie jest problemem (samo usuwanie cleanmgr
zajmuje tylko pięć minut, ale zajmuje więcej niż osiem godzin).
Samo usuwanie może przebiegać tak szybko, ponieważ hostem jest system Linux, szybkość ta jest spowodowana tylko tym, że Linux buforuje wszystkie zapisy do pliku o stałym rozmiarze, który jest używany jako dysk na maszynie wirtualnej (24GiB), a ponieważ mam 64GiB Pamięć RAM i pozwolę Windows 16GiB nie musi używać SWAP ani PAGEFILE.SYS; ponadto Linux może przechowywać cały plik na pamięci RAM (testowałem z tym plikiem na pamięci RAM i czasy usuwania są dużo robione, ale cleanmgr
czas nie spada).
Tak, jeśli wrzucę dysk wirtualny całkowicie do pamięci RAM, cleanmgr
czas nie mija, ale jeśli ręcznie usuwam pliki, czas ten maleje nieco (pamięć podręczna zapisu w systemie Linux jest świetna, gdy masz na niej 64 GB pamięci RAM).
Moja konfiguracja do testów:
- Host: dystrybucja Linux 64 bity na sprzęcie, którego głównymi częściami są AMD Deca Core 5GHz z 64GiB pamięci RAM i kontroler Sata Raid0 z dwoma dyskami twardymi WD VelociRaptor (zdolne do utrzymania łącznej prędkości zapisu sekwencyjnego blisko 1GiB / si losowego zapisu 4K 300 Mb / s); koszt to> dziesięć tysięcy euro
- Gość: Windows 10 Home z 16 GB pamięci RAM i wirtualny dysk 24 GB
Test1: Posiadanie dysku wirtualnego 24GiB na fizycznych dyskach twardych Test2: Posiadanie dysku wirtualnego 24GiB na pamięci RAM hosta Linux
Obawiam się, że cleanmgr
robi coś w rejestrze systemu Windows dla każdego usuwanego pliku (dostęp do rejestru jest bardzo niski).
Monitory, które miałem:
- Zużycie procesora na hoście Linux i na gościu Windows (większość czasu od 0% do 1%, z pikami 5%, nie więcej)
- Wykorzystanie dysku twardego na hoście Linux (prawie 0% podczas
cleanmgr
pracy, z pikami 2%), pamięć podręczna dysku Linux jest naprawdę świetna, unikając przesyłania danych na prawdziwy dysk
- Wykorzystanie dysku twardego przez gościa Windows (większość czasu między 2% a 15%, gdy
cleanmgr
pracował, z pikami 28%)
Czy cleanmgr
to oczywiste, że wykonuje dużo niewykrywalnej pracy, może czasy snu? Może nie, jeśli uzyskuje dostęp do rejestru, procesor na to nie jest liczony przez monitory Windows, dysk twardy na nim nie jest używany (rejestr znajduje się w pamięci RAM) itp., A każdy dostęp do rejestru może zająć więcej niż sekundę. . wypróbuj swój własny program, aby uzyskać dostęp do rejestru, otwierając rejestr i zamykając go dla każdej akcji w porównaniu do otwarcia HK * ... to wielka różnica.
Jeśli cleanmgr
tak, dla każdego pliku:
- Otwórz rejestr HK *
- Skonsultuj się z wszelkimi potrzebami i / lub zrób kilka zapisów w rejestrze
- Zamknij rejestr HK *
Może to zająć nawet dwie lub trzy sekundy na operację, a jeśli wykona jedną operację na plik, może zająć prawie godzinę na każdy tysiąc plików ... moja liczba plików wynosiła niewiele ponad 40000 plików, więc 40000 plików / 8 godzin przetwarza jeden plik co 1,3 sekundy ... z drugiej strony, usuwanie ich w skrypcie (po poznaniu, które z nich) zajmuje mniej niż pięć minut, czyli usuwanie około 133 na sekundę ... hufe różnica.
cleanmgr
Czas zdecydowanie nie jest powodowany przez deletion
to ja! Co jeszcze robi? Proszę M $ poprawić tę prędkość!