Juste une question de curiosité. Le nettoyage de disque a dépensé 100% de l’un de mes cœurs pendant un bon bout de temps et continue de fonctionner. Semble passer beaucoup de temps en particulier sur Windows Update Cleanup.
Je ne comprends pas trop pourquoi la suppression de fichiers devrait être une activité aussi intensive. D'autant plus qu'il a déjà passé pas mal de temps à calculer ce qu'il pourrait supprimer.
Pourquoi le nettoyage de disque prend-il tant de temps et de ressources processeur? Qu'est-ce qu'il fait qui est si intensif?
Windows compresse le dossier WinSxS en supprimant les mises à jour remplacées et les fichiers de compression qui ne peuvent pas être désinstallés et qui ne sont pas utilisés dans diffs. Cela prend beaucoup de puissance de processeur et c'est pourquoi vous voyez une utilisation élevée du processeur.
Vous pouvez analyser l'utilisation du processeur avec xperf/WPA pour le vérifier.
Je peux confirmer que Windows Updates Cleanup nécessite presque 100% d’utilisation du processeur. Il s’agit de la compression WinSxS et de la réintégration des mises à jour:
J'ai commencé le nettoyage pour la première fois après l'installation de Windows et il m'a fallu 2 heures pour terminer à 50%. Vous pouvez voir sur le graphique que, dans un premier temps, beaucoup de lecture de petits fichiers sur le disque (deuxième graphique), et après une utilisation de 100% du processeur pour la compression, etc.
Une façon d’atténuer ce problème et d’accélérer un peu la phase "Nettoyage de la mise à jour Windows" du processus "Nettoyage de disque" consiste à définir temporairement une priorité plus élevée pour le processus TiWorker.exe pendant la durée de l'activité dite de "nettoyage".
Dans le voletGestionnaire des tâches"Détails", recherchez TiWorker.exe
et cliquez avec le bouton droit de la souris pour afficher un menu contextuel. Pour "Définir la priorité", choisissez "Au-dessus de la normale". Pour moi, l'activité de la CPU TiWorker
a été augmentée, passant d'environ 16% en moyenne à son plein potentiel de 25% (sur une machine à 4 cœurs).
Mis à part l'accélération minuscule - et peut-être un bon sentiment d'accomplissement - cela fournit, il y a bien peu à faire car apparemment "Windows Update Cleanup" est codé de manière à ce que, pour une raison inconnue, on procède fichier par fichier, rendant le travail global horriblement lié au disque.
Et aussi, sachez que le processus est très probablement pas bloqué et qu’il sera effectivement terminé un jour. Pour le vérifier (et pour vous distraire davantage pendant ce temps d'attente fastidieux), vous pouvez consulter la section 'Activité du disque' deResource Monitor(exécutez "resmon.exe" ).
Juste pour mettre le feu à la question, j'avais fait sur une machine virtuelle immuable les prochaines étapes:
cleanmgr
faire son travail et notez l'heure (plus de huit heures)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, sur cleanmgr
, je ne compte que le temps écoulé 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 ordinateur 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 RAM et je laisse à Windows 16GiB ne pas utiliser SWAP ni PAGEFILE.SYS; de plus, Linux peut contenir le fichier complet sur RAM (j’ai testé ce fichier sur RAM et supprimer les temps nécessaires, mais cleanmgr
fois ne tombe pas).
Oui, si je mets le disque virtuel entièrement sur la RAM, le temps cleanmgr
ne baisse pas, mais si je supprime les fichiers, ce temps diminue un peu (le cache en écriture Linux est génial quand vous avez 64GiB de RAM dessus).
Ma configuration pour les tests:
Test1: avoir le disque virtuel 24GiB sur les disques durs physiques Test2: avoir le disque virtuel 24GiB sur la RAM de l'hôte Linux
Je crains que cleanmgr
fasse quelque chose dans le registre Windows pour chaque fichier supprimé (l'accès au registre est très faible).
Moniteurs j'avais:
cleanmgr
fonctionnait, avec des piques de 2%), le cache disque Linux est vraiment génial, car il évite que des données soient envoyées sur un disque réel.cleanmgr
fonctionnait, avec des piques de 28%)Alors clairement cleanmgr
fait beaucoup de travail indétectable, peut-être même 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
le fait pour chaque fichier:
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.
Donc, le temps cleanmgr
n'est définitivement pas causé par le deletion
il-même! Que fait-il d'autre? S'il vous plaît M $ améliorer cette vitesse!
La suppression de 20 fichiers de 5 Mo nécessitera plus de temps que celle de 10 fichiers de 64 Mo. En effet, lorsque le système supprime des fichiers, il ne les supprime pas réellement (un espace vide sur un lecteur peut être constitué de bits "parasites"), mais simplement écrase la partie avant qui dit: "Un fichier commence ici" avec un charabia et ensuite, elle écrasera heureusement celle-ci et les parties suivantes plus tard, lorsque vous souhaitez utiliser l'espace. En réalité, supprimer équivaut à écrire autrement.
Le problème avec le nettoyage de disque, ce qu’il nettoie, c’est généralement BEAUCOUP de petits fichiers (cookies Internet, fichiers temporaires, etc.). En tant que tel, l'écriture sur le disque est plus importante que beaucoup d'autres choses et peut prendre autant de temps que l'installation de nouvelles fonctionnalités, en raison de l'écriture du volume sur le disque.
Autre mot d'avertissement: une partie de ce qui prend du temps est que, lors du nettoyage de WinSxS, le nettoyage de disque doit d'abord décompresser un grand nombre de fichiers. Donc, l'utilisation du disque augmente réellement pendant la première partie du nettoyage!