[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4705: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3838)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4707: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3838)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4708: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3838)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4709: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3838)
forum-ultracopier.first-world.info • View topic - Temps restant de la copie (calcul à modifier)
[ Forum ]

Temps restant de la copie (calcul à modifier)

Le reste

Re: Temps restant de la copie (calcul à modifier)

Postby Vette » Thu Sep 12, 2013 9:03 pm

Juste une idée qui me trotte dans la tête chaque fois que je regarde un décompte de temps pour une copie.
Je n'ai pas mis en oeuvre un tel calcul, donc cela reste vraiment qu'une idée.
En général, on a l'impression que le nombre de fichier n'est jamais pris en compte. Et dans le cas de fichiers de petite taille, c'est clairement le critère le plus important, comme le montre ta courbe. C'est valable sur les supports de stockage actuels (disque dur ou flash) et sur le réseau.
Si on voulait modéliser la chose de manière simpliste (on oublie la bosse par exemple), on pourrait dire que le temps de copie d'un ficher est :

Temps de copie d'un fichier = cout fixe + taille du fichier/debit max

En gros, le cout fixe, c'est le temps d'envoyer les infos du fichier et mettre a jour la FAT. Le reste, c'est le temps de transfert de données qui dépend directement de la taille et du débit.
Pour les petits fichiers, seul le cout fixe importe. Pour les gros fichier, la taille est la plus importante.

Du coup, pour un grand nombre de fichier, on aurait un truc du style :

Temps de copie total = nombre de fichiers * cout fixe + taille totale / débit max.

Le nombre de fichiers et la taille totale, c'est connu. Reste deux variables, le cout fixe et le debit max. Certes, ils peuvent varier pendant la copie, mais on va dire qu'ils sont relativement stables pour une même copie (même source, même destination). Sachant que si ils varient trop, toute estimation est vouée à l’échec.

Avec deux variables, ils faut deux équations pour les calculer. Donc il faut faire deux mesures à deux temps différents pour estimer les deux variables et ainsi calculer le temps à la fin de la copie. Il faudrait que ces deux mesures soient espacés pour être assez différentes et faire ressortir l'impact du débit et du coût fixe. A un instant T, il faudrait peut être utiliser la mesure au temps courant T, et la mesure faite a T/2. Cela implique de stocker les mesures, c'est un peu délicat, mais pas infaisable.
Un problème : dans le cas particulier ou tous les fichiers ont la même taille, on ne peut pas évaluer l'impact du coût fixe par rapport au débit. Dans ce cas, on peut faire une évaluation soit en utilisant le nombre de fichier seul, soit la taille totale (le résultat sera identique), en attendant d'avoir des fichiers plus petits ou plus gros.

Est ce que ça serait faisable ?


PS : vite fait, donc peut être avec des erreurs, les équations donneraient un truc du style :

Je simplifie en prenant les mesures a t1 = T/2 et t2 = T

nfx = nombre de fichiers au temps tx
tfx = taille des fichiers au temps tx:

Cout fixe = T / (nf1 + tf1 * (nf1 - nf2/2) / (tf2/2 - tf1))
Debit = tf1 / (T/2 - nf1 * Cout Fixe)
On voit que si tous les fichiers sont identiques, tf2/2 - tf1/ nf1-nf2/2 vaudra 0/0 donc impossible a evaluer, d'ou calcul classique.
Vette
 
Posts: 9
Joined: Wed Mar 27, 2013 11:47 am

Re: Temps restant de la copie (calcul à modifier)

Postby alpha_one_x86 » Fri Sep 13, 2013 7:28 am

Oui, et non. Dans la théorie c'est ça si ont oublie le cache, le buffer, et l'option inode thread.
Dans la pratique, les buffer à une grosse influence sur le temps d'accés à l'inode, surtout sous windows (variable de 1ms à plusieurs seconde). Et donc change beaucoup durant une même copie. Idem pour le débit moyen sur les gros fichiers.
Maintenant ton calcule à une complexité qui explose avec le nombre de fichier.

Mais pour la prochaine version, j'ai fait un algo qui prends en compte la vitesse pas taille de fichiers, avec une compensation d'erreur (du au buffer). Et qui estime à peu pret correctement le temps (beaucoup mieux de l'ago actuel).
Il est trés important que l'algo ai de bonne performance pour ne pas ralentir tout (voir freezer l'application), lors de large copie (plusieurs millions de fichiers).
Developer of / and of the game
User avatar
alpha_one_x86
Site Admin
 
Posts: 1246
Joined: Sun Oct 26, 2008 9:09 am

Re: Temps restant de la copie (calcul à modifier)

Postby Vette » Fri Sep 13, 2013 7:51 am

Le calcul ne change pas en fonction du nombre de fichier. Tu as, a chaque evaluation, que deux equations a calculer. Certes, si on prend en compte le temps précis (et pas T et T/2 comme j'ai fait), le calcul doit etre un poil plus complexe, mais avec les PC actuelle, est ce que ca ferait vraiment une difference. En tout cas cela reste un evaluation sur un ensemble de fichier (et pas fichier par fichier)
Le seul point un peu delicat est de stocker des resultats intermediaires pour comparer le temps courant avec un temps precedent. Il faudrait voir en pratique, mais un stockage des valeurs apres 5 - 50 - 500 fichiers pourrait suffire.

En tout cas, impatient de voir le resultat de ton nouveau calcul.
a+
Vette
 
Posts: 9
Joined: Wed Mar 27, 2013 11:47 am

Re: Temps restant de la copie (calcul à modifier)

Postby alpha_one_x86 » Fri Sep 13, 2013 8:10 am

Dsl, j'amais mal compris. Mais ça pose aussi des problèmes pour les courbes non linéaire.
Dans tout les cas, j'ai prévu de faire de multiple algo, sélectionnable par une option.
Developer of / and of the game
User avatar
alpha_one_x86
Site Admin
 
Posts: 1246
Joined: Sun Oct 26, 2008 9:09 am

Previous

Return to Autre



cron