Hanya untuk memadamkan pertanyaan, saya telah melakukan pada mesin virtual yang tidak dapat diurinkan langkah selanjutnya:
- Boot SystemRescueCD dan pasang partisi windows
- Daftar semua file pada disk ke file log (kurang dari satu menit)
- Reboot ke Windows
- Mari
cleanmgr
lakukan tugasnya dan catat waktunya (lebih dari delapan jam)
- Reboot ke SystemRescueCD dan pasang partisi windows
- Daftar semua file pada disk ke file log lain (kurang dari satu menit)
- Setel ulang mesin virtual yang tidak dapat diubah
- Reboot ke Windows
- Lakukan FOR / F ... untuk menghapus file seperti itu di command prompt admin (cmd) dan perhatikan waktunya (kurang dari lima menit)
Harap dicatat saya reboot ke Linux SystemRescueCd hanya untuk dapat membuat daftar semua file, juga yang tampak oleh Window dan juga untuk melakukan daftar secepat mungkin (tidak ada pemeriksaan ACL, dll).
Harap perhatikan juga bahwa cleanmgr
saya hanya menghitung waktu setelah pencarian berakhir (pencarian itu sendiri juga memakan waktu lebih dari enam jam).
Jadi menghapus file-file itu bukanlah kegagalan (penghapusan itu sendiri hanya membutuhkan lima menit tetapi cleanmgr
membutuhkan lebih dari delapan jam).
Penghapusan sendiri dapat berjalan sangat cepat karena host adalah Linux, kecepatan itu disebabkan hanya karena Linux menyimpan semua cache ke file ukuran tetap yang digunakan sebagai disk pada mesin virtual (24GiB), dan karena saya memiliki 64GiB dari RAM dan saya membiarkan ke Windows 16GiB itu tidak perlu menggunakan SWAP PAGEFILE.SYS; juga lebih, Linux dapat menyimpan file penuh pada RAM (saya diuji dengan file pada RAM dan menghapus kali dilakukan banyak, tetapi cleanmgr
waktu tidak drop-down).
Ya, jika saya meletakkan disk virtual sepenuhnya pada RAM, cleanmgr
waktu tidak turun tetapi jika saya manaully menghapus file, waktu itu turun sedikit saja (Linux menulis cache sangat bagus ketika Anda memiliki 64GiB RAM di atasnya).
Konfigurasi saya untuk tes:
- Host: Linux 64bits distro pada perangkat keras yang bagian utamanya adalah AMD Deca Core 5GHz dengan 64GiB RAM dan pengontrol Sata Raid0 dengan dua WD VelociRaptor HDDs (mampu mempertahankan kecepatan tulis sekuensial gabungan mendekati 1GiB / s dan penulisan acak 4K dari 300MiB / s); biayanya> sepuluh ribu euro
- Tamu: Windows 10 Home dengan ram 16GiB dan disk Virtual 24GiB
Test1: Memiliki disk virtual 24GiB di harddisk fisik Test2: Memiliki disk virtual 24GiB di RAM host Linux
Saya takut cleanmgr
melakukan sesuatu pada registry windows per setiap file yang terhapus (mengakses registri sangat rendah).
Monitor yang saya miliki:
- Penggunaan CPU pada host Linux dan pada Tamu Windows (sebagian besar waktu antara 0% dan 1%, dengan tombak 5%, tidak lebih)
- Penggunaan HDD pada host Linux (mendekati 0% ketika
cleanmgr
sedang bekerja, dengan tombak 2%), cache disk Linux benar-benar hebat menghindari dato dikirim ke disk nyata
- Penggunaan HDD pada tamu Windows (sebagian besar waktu antara 2% dan 15% saat
cleanmgr
bekerja, dengan tombak 28%)
Jadi jelas cleanmgr
melakukan banyak pekerjaan yang tidak terdeteksi, mungkin waktu tidur? Mungkin tidak, jika itu adalah registry accesiing, CPU untuk itu tidak dihitung oleh monitor Windows, HDD pada yang tidak digunakan (registry pada RAM), dll, dan setiap akses ke registri dapat memakan waktu lebih dari satu detik .. Coba program Anda sendiri untuk mengakses registri dengan membuka registri dan menutupnya per setiap tindakan dibandingkan membiarkan HK * dibuka ... itu adalah perbedaan besar.
Jadi jika cleanmgr
untuk setiap file:
- Buka registry HK *
- Konsultasikan kebutuhan apa pun dan / atau lakukan beberapa penulisan di registri
- Tutup pendaftaran HK *
Ini bisa memakan waktu dua atau tiga detik per operasi, dan jika ia melakukan satu operasi per file, itu bisa memakan waktu hampir satu jam per setiap seribu file ... hitungan file saya hanya sedikit lebih dari 40000 file, jadi 40000 file / 8 jam sedang memproses satu file setiap 1,3 detik ... di sisi lain, menghapusnya pada sebuah skrip (setelah mengetahui yang mana) membutuhkan waktu kurang dari lima menit, yaitu menghapus sekitar 133 per detik ... hufe perbedaan.
Jadi jelas cleanmgr
waktu tidak disebabkan oleh hal deletion
itu sendiri! Apa lagi yang dilakukannya? Tolong M $ tingkatkan kecepatan itu!