Page 1 of 1

Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 7:37 am
by DETOMINE
Bonjour à tous.
Ma proposition est sans doute un peu naïve, mais je me dis que si ça peut optimiser les performances...

J'ai remarqué lors d'une grosse copie que la vitesse de transfert fluctuait beaucoup, notamment parce que j'avais pas mal de petits fichiers à copier (HDD classique vers DD externe USB2 (plus lent que le disque dur interne)).
Je me demandait donc quelle stratégie utilisait ultracopier pour les copies, et du coup s'il était possible d'optimiser les transferts, tout en gardant une sécurité maximale pour les données.

Je me disait par exemple que pour optimiser les copies (et surtout les copies de pleins de petits fichiers, qui sont les plus problématiques à gérer), une stratégie possible serait de copier les petits fichiers (et regrouper) en RAM (par paquet de 50Mo par exemple), avant de les copier sur le disque dur d'arrivée (avec une option pour limiter l'usage de la RAM éventuellement).
Sachant que l'on est forcément limité par la vitesse d'écriture du disque d'arrivée ou par la vitesse de lecture du disque source...

Je m'imaginais quelques chose du genre :
Bon, Dans le cas où l'on est limité par la vitesse de lecture du disque source, il n'y a pas grand chose à faire : on copie directement, de toute façon si on veut grouper les fichiers ou quoique ce soit, on est perdant sur la vitesse de lecture.

Mais dans le cas où l'on est limité par la vitesse d'écriture du disque d'arrivée, ça devient très intéressant (SSD vers HDD de sauvegarde, HDD vers disque dur externe... etc), dans le sens on l'on peut créer un fichier tampon (par exemple en ram) et écrire en continu sur le disque...

Est il possible d'optimiser ultracopier en ce sens?



Je ne doute pas que le principe que j'expose est simpliste (ça doit être plus compliqué que ça à implémenter) mais je me dis qu'il y a quelque chose à faire en ce sens.

Dans tous les cas, je pense qu'il serait intéressant qu'une page de wiki soit rédigée avec les algorithmes utilisés par ultracopier, histoire :
-que le doute ne plane pas concernant les méthodes utilisées;
-que les non codeurs puissent contribuer à ultracopier par (exemple par) l'optimisation des algorithmes.

Re: Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 7:51 am
by alpha_one_x86
Boujours,

Le procédé décrit est celui d'un buffer. Il en existe un dans Ultracopier (en mode streaming), un dans Qt, un dans l'Os, un dans le hdd.
La seul optimisation c'est de notifié à l'OS que l'accés est séquentiel. Mais pour cela je doit réécrire le moteur de copie en C.

Les algorithmes utilisés dans Ultracopier sont en partie dans le wiki (en faite la dernière variante ne l'est pas mais ce n'est qu'une variante du truc de base).

Re: Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 8:03 am
by DETOMINE
Là où ça devient étonnant c'est qu'avec tous ces buffets on arrive encore a avoir le disque d'arrivée qui n'écrit pas en permanence? Faut il augmenter le buffer dans les options à ton avis?

Merci pour la réponse en tout cas.

Re: Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 8:20 am
by alpha_one_x86
Je pense que Windows écrit, mais qu'il remonte la progression une fois qu'il à écrit le buffer, d'ou la progression saccadé.

Re: Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 8:27 am
by DETOMINE
Je comprends.
Dans ce cas je pense qu'il faudrait lisser un minimum la vitesse (et le temps restant aussi) de manière à éviter les infos affichés du style 0Mo/s -> 100Mo/s -> 0Mo/s -> 150Mo/s...

Re: Stratégie de copie (optimisation des performances)

Posted: Thu May 23, 2013 8:41 am
by alpha_one_x86
Et encore, je me base sur les X derniére échantillons:
https://github.com/alphaonex86/Ultracop ... Variable.h
Pour l'instant 5 échantillons fait à 500ms d’intervalle.