====== Patch gen ====== {{tag>Tag_a_ajouter}} ===== Fonction ===== Générer les patch (delta) entre chaque version publié afin que les joueurs ne récupère que la différence entre leur version et la version cible. ===== Options ===== patch_gen --help Usage: patch_gen [-h][-v][-j] Generate patch Where options are: -h or --help : Display this help -v or --version : Display version of this program -j or --jobs : Specifies the number of jobs (commands) to run simultaneously CommandLine : command line (For a list of valid commands and their paramaters try help) Usage: patch_gen [-h][-v][-j] patch_gen help INF fb959740 patch_gen : Executing command : 'help' INF fb959740 patch_gen : Help commands: INF fb959740 patch_gen : - help all INF fb959740 patch_gen : - help commands INF fb959740 patch_gen : - help nel INF fb959740 patch_gen : - help INF fb959740 patch_gen : - help patch_gen help commands INF 0942a740 patch_gen : Executing command : 'help commands' INF 0942a740 patch_gen : Displaying commands and variables from category: commands INF 0942a740 patch_gen : 0 createNewProduct: create a new package description file INF 0942a740 patch_gen : 1 go : perform a 'createNewProduct' if required and 'updateProduct' on patch_test/test0/test_package.xml INF 0942a740 patch_gen : 2 updateProduct : process a package ===== Command ===== ==== createNewProduct ==== Création du nouveau package (squelette, configure le fichier xml) ==== updateProduct ==== Génération du package (génère les patchs / delta avec l'ancienne version) ==== go ==== Fonction de test ===== Usage ===== patch_gen createNewProduct patch_game/ryzom.xml patch_gen updateProduct patch_game/ryzom.xml ===== Multi-thread ===== ==== Info ==== Dans la commande 'updateProduct', nous avons la possibilité d'utiliser plusieurs thread pour effectuer les taches relativement longue. Exemple : on lance ici 12 threads patch_gen --jobs=12 updateProduct patch_game/ryzom.xml ==== Statistique ==== Réalisé sur une machine ayant 12 cpu. | Nombre de thread | Temps (s) | Temps | % | | 1 | 874 | 14 min 34 | 100 | | 2 | 458 | 7 min 38 | 52,40 | | 3 | 319 | 5 min 19 | 36,50 | | 4 | 249 | 4 min 9 | 28,49 | | 5 | 209 | 3 min 29 | 23,91 | | 6 | 180 | 3 min 0 | 20,59 | | 7 | 174 | 2 min 54 | 19,91 | | 8 | 194 | 3 min 14 | 22,20 | | 9 | 192 | 3 min 12 | 21,97 | | 10 | 198 | 3 min 18 | 22,65 | | 11 | 197 | 3 min 17 | 22,54 | | 12 | 201 | 3 min 21 | 23,00 | 1er constat, le bon paramètre pour le nombre de thread ne dépend pas uniquement du nombre de CPU. Il s'agit d'un mixte entre CPU, I&O et mémoire. ===== Sources ===== ==== Localisation ==== | Fichiers | Fonction | | ryzom/tools/patch_gen/patch_gen_main.cpp | programme principal - récupère les arguments | | ryzom/tools/patch_gen/patch_gen_main.h | entête du programme principal | | ryzom/tools/patch_gen/patch_gen_common.cpp | réalise toutes les opérations | | ryzom/tools/patch_gen/patch_gen_common.h | entête sur les opérations | ==== Class ==== | Nom de la class | fonction | | CTaskPackageDescription | Exécution d'un thread (exécuté dans updateProduct / generatePatches) | | CPackageDescription | Class principale, effectue toutes les opérations (sauf la partie generatePatches - il configure et lance les thread) |