Mengapa Disk Cleanup membutuhkan banyak waktu dan cpu?

29

Hanya pertanyaan penasaran. Disk Cleanup telah menghabiskan 100% dari salah satu core saya cukup lama dan masih berjalan. Tampaknya menghabiskan banyak waktu terutama pada Pembaruan Pembaruan Windows.

Tidak bisa mengerti mengapa menghapus file harus menjadi kegiatan yang intensif. Terutama karena sudah menghabiskan banyak waktu menghitung apa yang bisa dihapus.

Mengapa Disk Cleanup membutuhkan banyak waktu dan cpu? Apa fungsinya yang begitu intensif?

Dua dari empat core maksimal

Svish
sumber

Jawaban:

20

Windows mengompres folder WinSxS dengan menghapus pembaruan yang digantikan file pengompres yang tidak dapat dihapus dan yang tidak digunakan menjadi diff. Ini membutuhkan banyak daya CPU dan itulah sebabnya Anda melihat penggunaan CPU yang tinggi.

Anda dapat menganalisis penggunaan CPU dengan xperf / WPA untuk memverifikasi ini.

magicandre1981
sumber
Bukankah ini juga menghitung ruang yang disimpan saat mengompresi file tertua (yang tidak dibuka baru-baru ini)?
Justin Goldberg
Video yang bagus! Pasti akan memeriksa ke alat itu: D
Svish
@Vish sudahkah Anda memverifikasi ini? Apakah pertanyaannya dijawab?
magicandre1981
4

Saya dapat mengkonfirmasi bahwa Pembaruan Pembaruan Windows membutuhkan hampir 100% penggunaan CPU, ini semua tentang kompresi WinSxS dan reintegrasi pembaruan:

Pembersihan Windows 100% penggunaan CPU

Saya mulai membersihkan pertama kali setelah menginstal Windows dan butuh 2 jam untuk menyelesaikan 50%. Dari grafik Anda dapat melihat, bahwa pada awalnya banyak membaca file kecil dari disk (grafik kedua), dan setelah penggunaan CPU 100% untuk kompresi, dan sebagainya.

Arunas Bartisius
sumber
2

Hanya untuk memadamkan pertanyaan, saya telah melakukan pada mesin virtual yang tidak dapat diurinkan langkah selanjutnya:

  1. Boot SystemRescueCD dan pasang partisi windows
  2. Daftar semua file pada disk ke file log (kurang dari satu menit)
  3. Reboot ke Windows
  4. Mari cleanmgrlakukan tugasnya dan catat waktunya (lebih dari delapan jam)
  5. Reboot ke SystemRescueCD dan pasang partisi windows
  6. Daftar semua file pada disk ke file log lain (kurang dari satu menit)
  7. Setel ulang mesin virtual yang tidak dapat diubah
  8. Reboot ke Windows
  9. 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 cleanmgrsaya 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 cleanmgrmembutuhkan 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 cleanmgrwaktu tidak drop-down).

Ya, jika saya meletakkan disk virtual sepenuhnya pada RAM, cleanmgrwaktu 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 cleanmgrmelakukan 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 cleanmgrsedang 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 cleanmgrbekerja, dengan tombak 28%)

Jadi jelas cleanmgrmelakukan 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 cleanmgruntuk setiap file:

  1. Buka registry HK *
  2. Konsultasikan kebutuhan apa pun dan / atau lakukan beberapa penulisan di registri
  3. 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 cleanmgrwaktu tidak disebabkan oleh hal deletionitu sendiri! Apa lagi yang dilakukannya? Tolong M $ tingkatkan kecepatan itu!

Claudio
sumber
1
Ini bukan jawaban untuk pertanyaan awal. Jika Anda memiliki pertanyaan baru, silakan tanyakan pertanyaan Anda sendiri (merujuk ini untuk konteks jika itu membantu).
DavidPostill
Mengapa Anda tidak menggunakan monitor proses ( docs.microsoft.com/en-us/sysinternals/downloads/procmon ) untuk menganalisis tindakan registry windows dll?
cybernard
* i m bisa berubah sp.
StingyJack
2

Salah satu cara untuk mengurangi masalah ini dan mempercepat fase "Pembaruan Pembaruan Windows" dari "Pembersihan Disk" adalah untuk sementara menetapkan prioritas yang lebih tinggi untuk proses TiWorker.exe selama durasi yang disebut aktivitas 'pembersihan'.

Di panel 'Detail' Task Manager , temukan TiWorker.exedan klik kanan untuk menampilkan menu pop-up. Untuk 'Set Priority, "pilih" Above Normal. "Bagi saya, ini meningkatkan TiWorkeraktivitas CPU - dari rata-rata sekitar 16% - hingga potensi penuh sebesar 25% (pada mesin 4-core).

masukkan deskripsi gambar di sini

Selain dari miniscule speedup - dan mungkin perasaan pencapaian yang bagus - ini memberikan, ada sedikit yang dapat dilakukan karena tampaknya "Pembaruan Pembaruan Windows" dikodekan sedemikian rupa sehingga, untuk alasan yang tidak diketahui, menghasilkan file per file, membuat pekerjaan keseluruhan sangat buruk disk-terikat.

Dan juga, tahu bahwa prosesnya kemungkinan besar tidak digantung, dan memang akan selesai suatu hari nanti. Untuk memverifikasi ini (dan untuk lebih mengalihkan perhatian Anda selama waktu tunggu yang menjengkelkan ini), Anda dapat memeriksa bagian 'Kegiatan Disk' di Resource Monitor (jalankan "resmon.exe").

Glenn Slayden
sumber
Kecepatan sangat bagus!
subjektivis
1

Menghapus 20 file berukuran 5mb akan membutuhkan waktu lebih lama untuk menghapus dari 10 file berukuran 64mb. Ini karena ketika sistem menghapus file, itu tidak benar - benar menghapusnya (karena ruang kosong pada drive dapat dibuat dari bit "noise") tetapi hanya menimpa bagian depan yang mengatakan, "File dimulai di sini" dengan omong kosong dan kemudian itu akan dengan senang hati menimpa itu dan bagian-bagian berikut nanti ketika Anda ingin menggunakan ruang. Pada kenyataannya, menghapus sama dengan menulis sebaliknya.

Masalahnya dengan pembersihan disk, adalah hal-hal yang dibersihkan biasanya BANYAK file kecil (cookie internet, file sementara, dll.). Dengan demikian, ia lebih banyak menulis ke disk daripada banyak hal lain, dan dapat mengambil banyak waktu seperti menginstal sesuatu yang baru, karena volume yang ditulis ke disk.

liljoshu
sumber
Pertanyaan awal secara khusus menanyakan tentang Pembersihan Disk.
liljoshu
0

Kata peringatan lain: bagian dari apa yang menghabiskan waktu adalah bahwa, ketika membersihkan WinSxS, Disk Clean-up pertama-tama harus mengompres banyak file. Jadi penggunaan disk sebenarnya meningkat untuk bagian pertama dari pembersihan!

JonP
sumber
-2

Cara lain untuk mempercepat proses ini adalah menjalankan Pembersihan Disk selama sekitar 5 menit. Hentikan, lalu mulai lagi, dan itu akan berlalu dengan cepat! Juga, De-Fragging atau Mengoptimalkan HDD / SSD Anda sebelumnya akan mempercepat, ingatlah untuk de-frag / Optz lagi setelah pembersihan.

Bluesdigital
sumber
Tolong jangan defragment SSD Anda karena aus membaca dan menulis siklus dan hampir tidak mendapatkan keuntungan.
Nordlys Jeger