43 votes

Dialog de copie de fichiers Windows: Pourquoi l'estimation est-elle si... MAUVAISE?

Estimation

xkcd

Je sais que la boîte de dialogue de copie de Windows (sous Windows XP) stocke d'abord la copie en mémoire, et qu'elle continue à copier après la fermeture de la boîte de dialogue, donc le temps est incorrect, mais pourquoi l'estimation du temps nécessaire pour effectuer une copie est-elle si imprécise, même lorsque la copie en mémoire a été désactivée (sous Vista et Windows 7) ? Cela semble si arbitraire ! Comment fonctionne toute la procédure de copie, et pourquoi Windows ne peut-il pas l'estimer correctement ?

48voto

Mert Nuhoglu Points 1988

Raymond Chen a écrit un très bel article à ce sujet une fois. Fondamentalement, la boîte de dialogue ne fait que deviner :).

https://devblogs.microsoft.com/oldnewthing/20040106-00/?p=41193

"Parce que la boîte de dialogue de copie ne fait que deviner. Elle ne peut pas prédire l'avenir, mais elle est forcée d'essayer. Et au tout début de la copie, lorsque l'historique est très limité, la prédiction peut être vraiment mauvaise.

Voici une analogie : Supposez que quelqu'un vous dise : "Je vais compter jusqu'à 100, et vous devez donner des estimations continues sur quand j'aurai fini." Ils commencent, "un, deux, trois...". Vous remarquez qu'ils comptent environ un nombre par seconde, donc vous estimez 100 secondes. Oh-oh, maintenant ils ralentissent. "Quatre... ... ... cinq... ... ..." Maintenant vous devez changer votre estimation à peut-être 200 secondes. Maintenant ils accélèrent : "six-sept-huit-neuf" Vous devez mettre à jour votre estimation à nouveau.

Maintenant quelqu'un qui ne fait que écouter vos estimations et pas la personne qui compte croit que vous avez perdu la boule. Votre estimation est passée de 100 secondes à 200 secondes à 50 secondes ; quel est votre problème ? Pourquoi ne pouvez-vous pas donner une bonne estimation ?

La copie de fichiers est la même chose. L'interface graphique sait combien de fichiers et combien d'octets vont être copiés, mais elle ne sait pas à quelle vitesse le disque dur, le réseau ou Internet va fonctionner, donc elle doit simplement deviner. Si le débit de copie change, l'estimation doit changer pour prendre en compte le nouveau taux de transfert."

33voto

Ed Brannin Points 2723

Je vais compter jusqu'à dix, 1....2....3....4 combien de points cela va-t-il prendre pour arriver à 10?

5.6.7 Et maintenant? Prenez-vous en compte tous les points passés entre les nombres et les moyennez-vous, ne prenez-vous que les 4 derniers intervalles et utilisez-vous cette moyenne, regardez-vous seulement le dernier intervalle?

Vous avez le même problème avec les transferts de fichiers. La vitesse à laquelle le fichier est transféré n'est pas constante, elle accélère et ralentit en fonction de nombreux facteurs. La raison pour laquelle le nombre saute autant est que Microsoft penche du côté de "ne compter que le dernier intervalle".

Il n'y a rien de mal à ce côté-là du spectre, cela vous donne un "une seconde par seconde" plus précis (une seconde en temps réel fait descendre le compteur d'une seconde) mais cela fait sauter beaucoup l'ETA totale du minuteur.

Un bon exemple du côté opposé est 7-Zip lorsqu'il compresse. Si la vitesse de la compression diminue pendant le traitement, vous pouvez voir que l'ETA ne saute pas de manière spectaculaire comme un ETA de transfert de fichier, mais il peut falloir 2 à 3 secondes réelles avant que le minuteur ne se déclenche d'une seconde (ou il peut même commencer à compter à rebours) jusqu'à ce qu'il se stabilise à la nouvelle vitesse.

29voto

hippietrail Points 773

En bref : les algorithmes pauvres et l'estimation instable sont en réalité une faiblesse de mise en œuvre.

D'autres outils comme TeraCopy font un meilleur travail. Je pense qu'il n'est pas utile d'expliquer pourquoi leur mise en œuvre n'est pas bonne. Ils l'ont remarqué et vont s'améliorer.

Ce qui est difficile :

  1. Vous devez tenir compte des fluctuations des ressources (CPU/largeur de bande réseau/vitesse du disque dur principalement)
  2. Vous devez extrapoler le temps qu'il faudra en prédisant le comportement (ce que finalement la copie de fichiers de Windows fait mal en ce moment).
  3. Apporter des ajustements petit à petit à votre estimation d'origine (je veux dire de petits ajustements, pas comme dans l'image amusante ci-dessus !)

Pour cela, non seulement la quantité d'octets, mais également la quantité de fichiers à créer jouent un rôle. Si vous avez un million de fichiers de 1 Ko ou mille fichiers de 1 Mo, la situation sera assez différente car le premier a le surcoût de la création de nombreux fichiers. Selon le système de fichiers utilisé, cela pourrait prendre plus de temps que le transfert effectif des données.

Ce dialogue m'a aussi rendu fou quelques fois :

  • Sur un ancien système WinNT, si vous aviez beaucoup de petits fichiers à copier, il affichait le nom et une belle animation pour chaque fichier, ralentissant ainsi tout le processus pour le rendre pratiquement inutilisable.

Le système de copie Windows moderne n'est pas beaucoup mieux :

  • Pour calculer la quantité de données à transférer, il semble faire d'abord une recherche (c'est ce que je suppose qu'il fait) donc cela prend des siècles si vous sélectionnez beaucoup de répertoires avant de commencer effectivement le travail.
  • Un délai d'attente intégré empêche la copie de gros fichiers (> environ 60 Go sur mon système). La douleur est que cela vous le dit après avoir déjà copié plus de 30 Go sur le réseau et c'est une bande passante et du temps perdus car vous devez recommencer à zéro !
  • La copie de fichiers d'un ordinateur à un autre est foutrement lente pour une raison quelconque. (je veux dire comparé à la largeur de bande réseau disponible, en utilisant d'autres outils c'est plus rapide donc ce n'est pas une limitation computationnelle.)

15voto

Chochos Points 3364

Il y a en réalité une réponse presque canonique de Raymond Chen de Microsoft à ce sujet qui date de WAAAAAY back, et il y a quelques pièces au puzzle.

Parce que la boîte de dialogue de copie ne fait que deviner. Elle ne peut pas prédire l'avenir, mais elle est forcée d'essayer. Et au tout début de la copie, lorsque il y a très peu d'historique à consulter, la prédiction peut être vraiment mauvaise.

Tout d'abord, Windows devine. Il sait combien de fichiers il y a, et leur taille, mais le taux de transfert par fichier est très variable. Cela dépend de choses comme la taille, ou même l'emplacement sur le disque dans certains cas. Au fur et à mesure, il ajuste sa supposition en fonction des conditions actuelles et passées, et par conséquent vous avez des vitesses de transfert estimées inexactes dans des conditions réelles.

12voto

haimg Points 21323

Voici l'explication par Raymond Chen, Ingénieur en Chef en Conception Logicielle chez Microsoft :

Pourquoi la boîte de dialogue de copie donne-t-elle des estimations si horribles ?

Parce que la boîte de dialogue de copie ne fait que deviner. Elle ne peut pas prédire l'avenir, mais elle est forcée d'essayer. Et au tout début de la copie, quand il y a très peu d'histoirique à consulter, la prédiction peut être vraiment mauvaise.

Voici une analogie : Supposez que quelqu'un vous dise : "Je vais compter jusqu'à 100, et vous devez faire des estimations continues sur quand j'aurai fini." Il commence, "un, deux, trois...". Vous remarquez qu'il avance à environ un nombre par seconde, donc vous estimez 100 secondes. Oh là là, maintenant il ralentit. "Quatre... ... ... cinq... ... ..." Maintenant vous devez changer votre estimation à peut-être 200 secondes. Maintenant il accélère : "six-sept-huit-neuf" Vous devez mettre à jour votre estimation à nouveau.

Le billet de blog cité ci-dessus comporte une longue discussion sur cette question, avec quelques commentaires intéressants.

Raymond Chen est une personne légendaire, le "Chuck Norris de Microsoft", je ne pense pas que vous allez obtenir une réponse plus autoritaire. Je suis sûr qu'il avait au moins vu le code en question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X