Large liste de copie sous Ultracopier

Je viens de tester Ultracopier avec 2 millions de fichiers et 2To.

Ca m’as permit de trouver d’autre petit bug qui n’ont rien à voir. Mais la copie marche bien, attention, il faut Ultracopier 64Bits et 8Go de mémoire mini pour boucler cette copie.

Je vais essayer d’améliorer encore la réactivité pour ce cas de figure, qui est vraiment très bonne.

Large copy list under Ultracopier
Large copy list under Ultracopier, with 2 millions of files and 2TB.

En passant, mon site pro: herman infogerance

Fin de ultracopier 0.3

Bonjour, je suis heureux de vous annoncer que j’ai fini ultracopier 0.3 pour la partie fonctionnalités. Et oui, les dernières qu’il manquais dons certaine depuis les 1ere version (checksum, list de copy, …) sont faites. Tout ça grace à sa modularisation.

Je doit encore chercher et corriger les bugs, nettoyer un peu tout, faire la doc, et peu être un peu continuer cette branche. Le prochaine branche 0.4 sera sur Qt5, et il y as pas mal de chose à refaire, mais ça devrai être assez rapide.

Continuer la lecture de Fin de ultracopier 0.3

Teracopy trés lent

Bonjour, je viens de copier d’un partage réseau (samba protocole smb1 sous linux, monté en z:) vers hdd local windows xp. Teracopy plusieurs minutes, le copieur par default: 7s. Ultracopier avec le moteur de copie 0.29sUltracopier avec le moteur de copie 0.39s. En passant je viens de noter un certain nombre de bug sur la gestion de plusieurs moteur de copie avec Ultracopier.

Alors maitenant qu’on vienne pas me dire que teracopy est + rapide, peu étre sur les fichiers local, mais surtout pas sur les fichiers d’un partage réseau. En plus l’annulation de la copie alors que la destination existé m’as détruit tout les fichiers de destination! Pour reproduire, faire une copie depuis le réseau, faire tout écrasé, la copie lag, annulé la copie. (Bug impossible avec le code d’ultracopier, vu que pour l’écrasement il ne supprime la le fichier)

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.

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.

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.

Ultracopier dispo pour les betas testeur

Bonjour, Ultracopier 0.3 est dispo pour les béta testeur en tant que version pre-alpha.

L’ajout/suppression des plugins en live marche bien. La version windows marche içi (mais pas d’interception de la copie de l’explorateur volontairement).

La copie ce fait via le moteur d’ultracopier 0.2 adapter pour la version 0.3, je n’est pas testé la fiabilité des données. J’attends le site des modules pour supporter les mises à jour et le téléchargement des modules depuis le web.

Un certain nombre de plugin son dispo, 1 par catégorie, soit:

  • Moteur de copie de fichier local dérivé d’ultracopier 0.2
  • Langue: englais / francais traduction trés partielle
  • Listener pour attendre et écouter dans un protocole spécifique pour qu’on lui transmette les copies, içi le protocole catchcopy v0002
  • Un plugin loader de teste pour charger si besoin un plugin dans l’explorateur
  • Un session loader de teste pour chargé au démarage de la session ultracopier
  • Et le théme oxygen qui reprends les grands trai d’ultracopier 0.2

Je n’est pas encore fait le support des plugins statique.

Si vous voulez tester cette version contactez moins. Une fois ces trais fini je pense m’attaquer au autre modules, ceux simple puis ceux plus lourd (moteur de copie en rsync, KIO pour KDE, téléchargement de site web, …)

Si vous étes intéressé pour un plugin en particulier faite le moi savoir.

Ultracopier 0.3 qui copie

Bonjour, j’effectue mes premiéres copies avec Ultracopier 0.3. L’intégrité à été comronpu la premiére fois, ensuite tout à été ok.

La partie de debuggage à trop ralenti la copie pour voir que ce soit (copie de 30 fichiers < 1Mo). Il manque encore le chargement asyncrone des plugins, prise en charge des plugins static, maj des plugins à la volé, site internet pour les plugins, chargement depuis le web des plugins, mise à jour, …

Mais la bonne nouvelle c’est qu’il est à peu pret au niveau des fonctionnalités de la branche 0.2, mais en moins stable. Par contre son moteur de copie semble étre plus efficace pour lister les dossier alors qu’il est toujours basé sur l’algorithme de la branche 0.2, mais le code à été nétoyé.