Ultracopier 0.3

News spécifique à la version 0.3 d’ultracopier.

Sortie du moteur d’Ultracopier 0.3 en version sans gros bug

Bonjours, toujours à la même addresse:

http://files.first-world.info/ultracopier/tp/Ultracopier-0.3.0.0-win32.zip

J’ai maj Ultracopier avec le moteur 0.3 qui marche, il reste encore plein de bug, mais dans l’ensemble c’est utilisable.

Pour rappelle, il est comme: Teracopy (Certain l’appelle teracopier), copy handler (ou copyhandler), Supercopier
Ultracopier permet d’avoir un supercopier mac ;)

File transfer for file copy/move

Hello, here I will speak about file transfer to do copy/move. You need understand some basic therms.

I have discover which each OS and FS is different.

  • Windows/ntfs have correct fs layer, asynchronous inode and data layer, synchronous is not allowed and then flush return instantly regardless if is really written on the disk (prevent freeze the application, in all case data in memory lost application blocked or not). 
  • Linux/ext4 with partial asynchronous for data layer (in loop read/write the read block the write, and the write block the read), inode creations and manipulations are synchronous but due to low volume the aggressive access can be done without big lost of performance.
In my work I have found lot of problem, the main was:
  • close file descriptor after write lot of content call flush function or like, then is slow down while all file is not write, regardless if the hdd is idle or have few occupation.
  • In loop: read 1 block, write 1 block, the out of cache/buffer block the other operation without reason.
  • Inode access can be parallel to be grouped by the OS. At parallel copy, the mkdir to create the destination folder can concurrence then self.
  • The graphic thread, then the main thread can be slow down in some condition (like linux with slow open source graphic drivers and large file copy list), and the IO access is blocking.

Ultracopier 0.1

While { read (position); write (position) }

  • Advantage: Very simple, and used by the most of developer to have simple copy file.
  • Disadvantage: The missing cache do read blocking, then if buffer is not full, the write can be down without blocking but the loop and thread is blocked at read function and the contrary.
  • Implementation mistake: The slow down in interface slow down the copy.

Ultracopier 0.2

Thread 1: While { read (position); } , Thread pool for write: While { write (position); } close(); , and pipe like communication

  • Advantage: The close function is blocked in thread, and while is blocked another write thread is used. The read not block anymore the write, and the contrary (the different media have advantage, and the buffer and cache level can change separately and be in concurrency).
  • Disadvantage: It’s complicated on some programming aspect, I have need use goto to minimize the code, and have great big read function. The write thread decision is can be complicated too. The list parsing and read is same code for intuitive programming. Not parallel the extra programming like variable initialization, to prevent slow down for not real copy operation. Not parallel inode and data parallel operation possible. Can’t recovery destination file write corruption. 
  • Implementation mistake: Do with thread and lot of blocking function (not event to have cleaner design), based on 0.1 design. The slow down in interface slow down the copy.

Ultracopier 0.3

Thead 1: Copy list send/receive event (start transfer, stop transfer event), Thread list of {Read thread, Write thread, transfer thread} with pipe like communication.

  • Advantage: Can parallel the inode and data access, prevent no copy operation to slow down the copy. Can group inode access via parallel access, but data parallel is bad in general. Have asynchronous behavior like for all OS/FS (included synchronous OS/FS like linux/ext4). Very cleaner design, possible separate control on each transfer. Can recovery destination file write corruption. 
  • Disadvantage: Need master multi-thread, data locality, and lot of advanced algorithm.
The new copy engine is the best I have do, if you which do your copy engine to have better, make it has ultracopier plugin and compare with my copy engine.

Ultracopier maj avec le nouveau moteur de copie

Bonjour, j’ai maj ultracopier 0.3 avec le moteur de copie définitif, le 0.3, il est buggé, il reste un bug super dur à trouvé. Aprés il sera utilisable, mais pas d’une stabilité à toute épreuve.

J’ai mit aussi le moteur 0.2. Comme vous pouvez le voir, la nouvelle version est bien plus rapide dans certain cas que j’ai pu tester (linux + ext4).

J’ai pu avancé, mais pas plus du à mon départ d’espagne pour la bolivie. Je m’installe tranquillement. Mais une fois les maj implémenté je pense et fixer le bug du moteur de copie, je pense m’attaquer à quelque autre moteur de copie et avancé rapidement sur ces derniers. Ensuite je passerai le status en beta.

Ultracopier pre-alpha version 0.3.0.0 tp

Bonjour, pour ceux qui veulent avoir un bon aperçu de ce que sera ultracopier 0.3.0.0, j’ai mit un tp en pre-alpha (pas du tout stable) içi:

Ultracopier-0.3.0.0-win32.zip

C’est l’accumulation d’un ans de travail.

Protocole du moteur de copie d’ultracopier 0.3 pour récupération des erreurs d’écriture

Bonjour, voila le protocole du moteur de copie d’ultracopier 0.3 pour récupération des erreurs d’écriture:

error-during-write

error-during-write

 

 

 

 

 

 

 

 

 

 

Il peu semblé complexe, mais il est obligatoire car la coupure brutale de la destination entraîne la corruption de la fin du fichiers.

log sous ultracopier 0.3

Bonjour, j’ai fait les log dans ultracopier, car ça semble trés trés demandé.

ultracopier-log

ultracopier-log

 

 

 

 

 

 

 

 

 

Je suis entrain de concevoir l’organisation du nouveau moteur, il sera mieux conçu, plus performant et surtout bien meilleur pour la sécurité des données. Il pourra faire des copies en parallèle, mais sont but sera avant tout de faire des files de données pour maximisé les débits, une file pour l’écriture, l’autre pour la lecture. Et toutes les meta-operations, de le faire en parallélisme intelligent.

Voila une ébauche du moteur interne pour 1 transfert:

transfer thread - copy engine - ultracopier 0.3

transfer thread - copy engine - ultracopier 0.3

 

 

 

 

 

 

 

 

 

 

 

 

Et les enchaînements sont beaucoup plus évenmentiels.

Avancement sur Ultracopier 0.3

Bonjour, je viens de finir un certain nombre de changement sur Ultracopier 0.3, l’ensemble est assez stable.
Il y as divers plugins, dons 3 thémes, mais qu’un seul moteur de copie, qui est pour l’instant hélas, une reprise de la version 0.2 comme une partie des plugins.

Pour ceux qui le veulent je peu vous transmettre un version d’ultracopier 0.3, je la considére encore en stade pre-alpha car il n’y as aucun garantie sur la fiabilité des données. Je n’est pas fait de teste à ce sujet la (ou trés peu). Mais l’ensemble est utilisable en fesant la copie à la main, car je cherche un freelance en win32 pour refaire le plugin d’interception de l’explorateur de windows.

J’essaye de faire un nouveau moteur de copie tout neuf, et qui part sur de bonne base, voila le plan:

Ultracopier CopyEngine 0.3

Video d’ultracopier 0.3

Bonjour, voila les videos d’ultracopier 0.3:

 


Remake du systéme d’options dans Ultracopier 0.3

Bonjour, j’ai refait entiérement les options dans Ultracopier 0.3, pour l’écriture de plugin, elle sont plus propre, plus sécurisé. Pour la partie principal j’ai aussi complement refait le panneau de l’application, j’ai gagné fortement en temps de démarage d’ultracopier, je le trouve mieux organisé, et il présente aussi les options du thémes sélectionné. Mais dans un avenir proche il fera de même avec soit le moteur sélectionné soit les moteurs existant.

J’ai fait aussi pas mal d’autre bug fix, et de la prévention de bug.

Une autre grosse innovation qui m’as demandé pas mal de travail c’est le fait d’avoir plein de moteur en parallèle avec des préférences. Comme ça Ultracopier utilise le moteur le plus en haut de la liste qui supporte le protocole demandé. Cette partie n’est pas encore totalement exploité.

J’attends encore 2 grosse briques pour que Ultracopier soit sortable, Qt 4.8 (pour les performances de son nouveau moteur d’accés aux fichiers) et OpenDesktop (pour avoir un site sans avoir à le faire, dans le quel tout le monde pourra y mettre ces plugins, et qui fera les mises à jours automatique)

Encore un changement dans l’interface du moteur de copie

Bonjour, Ultracopier continue à avancé, j’ai fixer pas mal de bug en relation avec le faite de passé un fichier.

C’est encore plus fiable, je regarde pour des personnes qui pourrai me faire la partie d’interception dans l’explorateur de fichier sous windows, linux et mac.

J’ai hélas du encore changé l’interface du moteur de copie pour prendre en compte certaine info. Les barres de progression sont plus fiable. J’ai nétoyé le code MVC, fait le transfère de date entre les fichiers, … le moteur deviens plus mur à chaque fois. Je regarde pour faire (ou faire faire) le site de plugin.

Il y avais aussi un bug dans le renommage dans certaines conditions.

Je pense commencer une nouvelle interface pour facilité la transition vers Ultracopier, et le moteur d’Ultracopier 0.1 comme proof of concept de ce qu’il ne faut pas faire.

Go to Top