Juste pour mettre le feu à la question, j'avais fait sur une machine virtuelle immuable les prochaines étapes:
- Démarrer un SystemRescueCD et monter la partition Windows
- Lister tous les fichiers sur le disque dans un fichier journal (moins d'une minute)
- Redémarrer sur Windows
- Laisse
cleanmgr
faire son travail et prend note de l'heure (plus de huit heures)
- Redémarrez sur SystemRescueCD et montez la partition Windows
- Répertorie tous les fichiers du disque dans un autre fichier journal (moins d'une minute)
- Réinitialiser la machine virtuelle immuable
- Redémarrer sur Windows
- Effectuez un FOR / F ... pour supprimer de tels fichiers dans une invite de commande administrateur (cmd) et prenez note de l'heure (moins de cinq minutes)
Veuillez noter que j'ai redémarré sur Linux SystemRescueCd juste pour pouvoir lister tous les fichiers, y compris ceux consultés par Window, ainsi que pour faire cette liste aussi rapidement que possible (pas de vérification, etc.).
Veuillez également noter que cleanmgr
je ne compte que le temps après la fin de la recherche (la recherche elle-même a également pris plus de six heures).
La suppression des fichiers n’est donc pas un gâchis (la suppression elle-même ne nécessite que cinq minutes mais cleanmgr
prend plus de huit heures).
Le supprimer lui-même peut aller si vite que l'hôte est un Linux, cette vitesse est due au fait que Linux met en cache toutes les écritures dans le fichier de taille fixe utilisé comme disque sur la machine virtuelle (24 Go), et depuis j'ai 64 Go de La RAM et moi laissons au Windows 16GiB il n’a pas besoin d’utiliser SWAP ni PAGEFILE.SYS; de plus, Linux peut contenir le fichier complet dans la RAM (j’ai testé ce fichier dans la RAM et les temps de suppression sont très fréquents, mais le cleanmgr
temps ne s’écoule pas).
Oui, si je mets le disque virtuel entièrement en RAM, le cleanmgr
temps ne baisse pas, mais si je supprime les fichiers, ce temps diminue un peu (le cache en écriture Linux est génial lorsque vous disposez de 64 Go de RAM).
Ma configuration pour les tests:
- Hôte: Linux 64 bits distribuée sur un matériel dont les pièces principales sont AMD Deca Core 5 GHz avec 64 Go de RAM, un contrôleur Sata Raid0 avec deux disques durs WD VelociRaptor (capable de maintenir une vitesse d’écriture combinée proche de 1 Go / s et une écriture aléatoire de 4 Ko) 300 Mo / s); le coût est> dix mille euros
- Invité: Windows 10 Home avec 16 Go de RAM et un disque virtuel de 24 Go
Test1: Disque virtuel 24GiB sur les disques durs physiques Test2: Disque virtuel 24GiB sur la RAM de l'hôte Linux
Je crains que cela cleanmgr
fasse quelque chose sur le registre Windows pour chaque fichier supprimé (l'accès au registre est très faible).
Les moniteurs que j'avais
- Utilisation du processeur sur l'hôte Linux et sur l'invité Windows (le temps entre 0% et 1%, avec des piques de 5%, pas plus)
- Utilisation du disque dur sur l'hôte Linux (près de 0% quand
cleanmgr
fonctionnait, avec des piques de 2%), le cache disque Linux est vraiment génial, évitant que des données soient envoyées sur un disque réel
- Utilisation du disque dur sur l'invité Windows (la plupart du temps entre 2% et 15% quand
cleanmgr
fonctionnait, avec des piques de 28%)
Alors, clairement, cleanmgr
fait-il beaucoup de travail indétectable, peut-être des heures de sommeil? Peut-être pas, s’il s’agit d’un registre, le processeur correspondant n’est pas compté par les moniteurs Windows, le disque dur n’est pas utilisé (le registre est sur RAM), etc., et chaque accès au registre peut durer plus d’une seconde. Essayez votre propre programme pour accéder au registre en l’ouvrant et en le fermant à chaque action, au lieu de laisser HK * ouvert… c’est une grande différence.
Donc, si cleanmgr
pour chaque fichier:
- Registre ouvert HK *
- Consultez ce dont vous avez besoin et / ou écrivez sur le registre
- Fermer le registre HK *
Cela peut prendre jusqu'à deux ou trois secondes par opération, et si vous effectuez une opération par fichier, cela peut prendre près d'une heure pour chaque millier de fichiers ... mon nombre de fichiers ne représentait qu'un peu plus de 40000 fichiers, donc 40000 fichiers / 8 heures traitent un fichier toutes les 1,3 secondes ... de l’autre côté, leur suppression sur un script (après avoir déterminé lesquelles) a pris moins de cinq minutes, soit environ 133 secondes par seconde ... différence.
Le cleanmgr
temps n'est donc certainement pas causé par le deletion
soi! Que fait-il d'autre? S'il vous plaît M $ améliorer cette vitesse!