Remarque : je suppose que vous avez un disque dur tournant. Les mesures de performance dans ces domaines sont très différentes pour le stockage à semi-conducteurs.
Alors qu'un lecteur moderne peut supporter plusieurs dizaines d'octets par seconde lors de lectures et d'écritures en masse, les deux opérations que vous décrivez impliquent au moins deux emplacements sur le disque, ce qui implique de nombreux mouvements de tête. La latence des mouvements de tête a un effet considérable sur le débit, car chaque fois que le lecteur doit déplacer les têtes, il y a un délai pour les envoyer au bon endroit, un délai pour attendre qu'elles se stabilisent, puis un délai pour attendre que la bonne partie du disque passe. Ces délais sont faibles en soi (pas même 10ns par mouvement au total en moyenne pour la plupart des lecteurs modernes), mais si le lecteur peut pousser 100Mbyte/sec en plein débit, 10ms par mouvement fait perdre le temps de 1Mbyte de transfert de données. S'il se passe beaucoup de choses, le lecteur peut facilement passer plus de temps à déplacer les têtes qu'à lire et écrire des données (lire pendant quelques dizaines de ms, déplacer la tête, lire à partir de là pendant un peu, déplacer la tête, écrire pendant quelques ms, déplacer la tête...).
Lorsque vous défragmentez le disque, l'utilitaire passe la plupart de son temps à lire à partir d'un endroit du disque et à écrire vers un autre, un petit nombre de blocs à la fois. L'extraction du contenu d'un ensemble de fichiers protégés par parité est encore pire car il y a au moins deux fichiers en lecture (un fichier source et un ou plusieurs fichiers de parité) ainsi que le fichier de sortie en écriture. Même une simple opération de copie sur un gros fichier a cet effet. Tout cela sans compter les mouvements de tête nécessaires pour maintenir à jour les structures de répertoires et les cartes d'espace libre lorsque des blocs sont déplacés et/ou des fichiers étendus. L'exécution d'une machine virtuelle peut être tout aussi exigeante en fonction de ce que fait la machine virtuelle à ce moment-là (et la machine virtuelle réduira la RAM disponible sur la machine hôte pour l'utiliser comme cache/tampon, ce qui peut aggraver la situation, et toute opération d'écriture dans la machine virtuelle peut être beaucoup plus exigeante que la même opération sur l'hôte directement, surtout si vous utilisez des lecteurs virtuels "extensibles").
Avec tout cela, si une application GUI a besoin de demander ne serait-ce qu'un peu d'E/S, elle peut être mise en file d'attente derrière toutes les autres activités en cours. À moins que l'application ne soit entièrement multithreadée, elle risque de se "bloquer" en attendant la fin de l'opération d'E/S, ce qui signifie qu'elle n'est pas en mesure de répondre aux messages (comme "l'utilisateur vous a cliqué ici") dans la file d'attente des événements de Windows avant d'avoir son tour. Plus il y a d'opérations en même temps, plus la situation s'aggrave, et vous ne le remarquerez pas dans les relevés "CPU occupé" parce que le CPU n'est pas occupé - il est assis en attendant que les opérations d'E/S se terminent la plupart du temps dans ces circonstances.
Si vous avez deux disques ou plus, vous pouvez réduire considérablement l'effet de ce phénomène en répartissant la charge sur les disques. Si votre VM est sur un disque distinct de votre OS principal, ils ne se feront pas concurrence pour le service d'E/S lorsque la VM est occupée pendant que l'hôte défragmente la partition système. De même, l'extraction d'une archive d'un disque et l'écriture de la sortie sur un autre disque seront sensiblement plus rapides que l'extraction sur le même disque, car l'opération de lecture n'est pas en concurrence directe avec l'opération d'écriture pour le positionnement des têtes sur le disque.
2 votes
Seulement deux situations ? Ne passez pas à Vista si vous n'aimez pas les éléments d'interface utilisateur lents.
0 votes
Savez-vous si vous utilisez des disques SATA ou PATA ?