Ancestris - Forum

Ancestris Support => FRANÇAIS => Topic started by: daucourt on January 17, 2022, 20:43:08

Title: Lenteur Ancestris
Post by: daucourt on January 17, 2022, 20:43:08
Bonjour,

Je suis en :

Scénario (testé plusieurs fois) :

Pendant les secondes où j'attends, je vois le process java prendre 100% CPU.

Si je répète le scénario avec kennedy ou bourbon.ged, je n'ai pas le soucis.

J'ai cherché dans le forum, cherché le mot lenteur, et parcouru les titres des 3 derniers mois (français) et j'ai trouvé :
https://forum.ancestris.org/index.php?topic=3624.0
J'ai augmenté la mémoire allouée à Java à 4Go, mais aucune amélioration.

J'ai tenté un upgrade de Java:
- sudo apt install openjdk-17-jre
- sudo update-alternatives --config java
C'est 9 secondes au lieu de 8 secondes, je suis revenu à Open JDK 11

Je tente l'upgrade vers la version 12

Je rejoue le scénario (testé plusieurs fois)

Donc,

Passer en v12, c'est mieux, mais quelles seraient les pistes pour améliorer les performances ?

Merci par avance pour votre aide, et surtout pour Ancestris qui me permet de mettre mes données à l'abri des formats propriétaires !

[EDIT] rajout de l'info sur 100% CPU process java
Title: Re: Lenteur Ancestris
Post by: FredericL on January 17, 2022, 20:46:38
Bonjour,

Merci beaucoup pour ces explications détaillées. Très clair.
Juste une chose: combien de personnes dans votre généalogie ? Combien de lignes dans le fichier ? S'il n'y a pas de souci avec Kennedy et que c'est plus long avec votre fichier, comme Ancestris charge tout en mémoire...

Bien à vous,
Frédéric
Title: Re: Lenteur Ancestris
Post by: daucourt on January 17, 2022, 21:03:06
$ grep -c -E '^0 @I' arbre.ged
364
$ wc arbre.ged
 12578  57148 297406 arbre.ged


Donc 364 individus, et 12578 lignes dans le fichier gedcom. Ce qui me semble plutôt petit, non ?

Ancestris 11 fut rapide, en début de semaine dernière.
Le deux choses que j'ai faites depuis qui me semblent pourrait avoir un effet:
- ajout INDI+SOUR via Ancestris, et quelques modifications (via un éditeur de texte) dans le fichier .ged
- ajout de sources, dont 1 fichier jpg à 7Mo et un à 4 Mo
Title: Re : Lenteur Ancestris
Post by: Zurga on January 17, 2022, 21:10:23
Vos médias sont sur votre disque ou des liens internet ?

Zurga
Title: Re : Lenteur Ancestris
Post by: daucourt on January 17, 2022, 21:14:07
Tous les médias sont en disque dur local, enregistrés en relatif dans le fichier gedcom, avec un seul niveau d'arborescence relative.
Title: Re: Lenteur Ancestris
Post by: FredericL on January 17, 2022, 21:24:25
Quote
Ancestris 11 fut rapide, en début de semaine dernière.
Une chose est sûre: Ancestris 11 n'a pas changé d'un iota. Si votre fichier gedcom est le même (reprenez celui de la semaine dernière éventuellement), il n'y a pas de raison que le temps augmente, sauf si un autre facteur a changé (ordi, OS, java, internet).
Une autre chose est sans ambiguité : si cela ne survient pas avec Kennedy mais avec votre gedcom, il y a qqchose dans votre Gedcom qui peut provoquer cela. Auquel cas envoyez nous en privé votre fichier Gedcom (sans les médias) pour que l'on essaie de chez nous. (frederic@ancestris.org).
Bien à vous,
Frédéric

Title: Re : Lenteur Ancestris
Post by: Zurga on January 17, 2022, 21:26:59
Juste pour éliminer une possibilité : quelles sont les fenêtres ouvertes dans votre configuration ?

Zurga
Title: Re : Lenteur Ancestris
Post by: daucourt on January 17, 2022, 21:34:06
@Zurga : les fenêtres suivantes sont ouvertes:
- en haut à gauche : Accueil, Arbre
- en haut à droite, Cygnus
- en bas : Arbre (entités)

Si je ferme toutes les fenêtres sauf Cygnus, je reproduis exactement le même soucis de lenteur.

@FredericL, fichier envoyé par mail
Title: Re: Lenteur Ancestris
Post by: FredericL on January 17, 2022, 21:45:50
Je viens de charger le fichier et je ne constate aucun pb de lenteur avec Ancestris v12. Linux Fedora. Java 17 ou Java 8. Cela répond immédiatement. Pas de montée de CPU.
Donc je n'ai pas d'explication à ce stade.
Avez-vous d'autres applications ouvertes sur votre poste ?
Frédéric
Title: Re: Lenteur Ancestris
Post by: daucourt on January 17, 2022, 22:00:26
Rha, zut, je croyais que vous alliez reproduire le problème ! ...

Sinon, je viens de faire le test en fermant toutes les fenêtres sauf un gnome-terminal pour lancer ancestris, et je reproduis le problème.

Je viens de faire le test en changeant de java (de 11 à 17), et je reproduis le problème.

Est-ce que l'on peut lancer java en débug, ou plutot lancer java en le profilant, pour voir où il passe son temps ? (j'ai été développeur, je ne le suis plus depuis 10 ans, mais j'ai déjà eu fait ça)
Title: Re: Lenteur Ancestris
Post by: FredericL on January 17, 2022, 22:04:08
Le plus étonnant, c'est que cela fonctionnait, vous dîtes, la semaine dernière avec la même config. C'est bien ça ?
Title: Re: Lenteur Ancestris
Post by: Zurga on January 17, 2022, 23:00:13
Il y a possibilité de profiler l'application avec l'utilitaire Java visual VM qui est disponible avec les JDK 8 d'Oracle ou ici : https://visualvm.github.io/
Si vous lancez l'application et cet outil, vous pouvez monitorer tous les éléments de la VM.
Notamment, vous pourrez faire un thread dump de l'application pour voir les threads qui prennent du CPU.

Zurga
Title: Re : Lenteur Ancestris
Post by: daucourt on January 17, 2022, 23:01:30
Je viens de restaurer le backup (de toute mon arborescence) du 02-jan-2022 : tout est sans lenteur.
Je viens de restaurer le backup (de toute mon arborescence) du 12-jan-2022 : tout est sans lenteur.

Dans mes backups, je vois que je n'ai fait des modifs sur le fichier gedcom que le 16/1, donc hier. Et un tout petit peu aujourd'hui. Mais j'avais le problème déjà hier.

J'ai fait un diff sur le fichier gedcom, entre le fichier du 12-jan et le fichier d'auj, et rien ne me parait suspect.
J'ai fait un diff sur l'arborescence, entre le 12-jan et auj, et rien ne me parait suspect : 24 fichiers passent de mon répertoire "Recherches" (qui contient mes fichiers en attente de traitement), et 24 fichiers arrivent dans mon répertoire "Sources".
Title: Re: Lenteur Ancestris
Post by: daucourt on January 17, 2022, 23:48:17
Il y a bien longtemps que je n'ai pas utilisé de profiler. Mais j'ai tenté.
Ce que je vois, c'est que c'est AWT-EventQueue-0 qui prend la CPU, et chaque fois que je fais "control-roulette sur la source", il y a 2,5 secondes CPU qui se rajoutent à cet AWT-EventQueue-0.
Il est tard, je vais me coucher, je ne sais pas comment poster un screenshot sur ce forum, je chercherai demain.
Title: Re: Lenteur Ancestris
Post by: FredericL on January 18, 2022, 07:13:00
Quote
Je viens de restaurer le backup (de toute mon arborescence) du 12-jan-2022 : tout est sans lenteur.
C'est bien la preuve que cela vient d'une différence dans les données !
Or il y a trois types de données dans l'arborescence:
- le gedcom
- les medias (photos et videos)
- le reste (?)
Seul le gedcom est chargé en mémoire, mais là le problème n'est pas un problème de mémoire mais de CPU.
Donc je dirais qu'il y a un media ou un fichier du reste qui pose pb.

Avez-vous fait un diff des fichiers ?

Si vous mettez le tout dernier gedcom dans un répertoire différent, en dehors de cette arborescence, est-ce que la lenteur apparaît ? Si oui, c'est le gedcom, mais j'en doute. Sinon, ajoutez-y petit à petit tous les fichiers différents de votre arborescence et à un moment donnée le fichier (ou les fichiers) qui pose problème va déclencher le pb de lenteur. Et sinon, c'est l'endroit où se trouve l'arborescence qui pose pb...

Qu'en pensez-vous ?

Frédéric
Title: Re: Lenteur Ancestris
Post by: Zurga on January 18, 2022, 08:29:00
c'est AWT-EventQueue-0 qui prend la CPU, et chaque fois que je fais "control-roulette sur la source", il y a 2,5 secondes CPU qui se rajoutent à cet AWT-EventQueue-0.
C'est le thread d'affichage de l'application.
Tout ce qui est graphique est envoyé à ce thread qui se charge de la mise à jour visuelle des écrans.
Il est étonnant que cela prenne 100% du CPU, mais ce n'est pas étonnant que ce soit ce thread qui soit sollicité.

Zurga
Title: Re: Lenteur Ancestris
Post by: daucourt on January 19, 2022, 23:22:53
Hier soir je ne pouvais pas tester, ce soir je m'y suis remis !

J'ai donc

Arbo12 est de la forme:

Arbo12
Arbo12/arbre.ged
Arbo12/Photos/*.jpg
Arbo12/Sources/*.jpg
Arbo12/Recherches/*.jpg
Arbo12/fichiers
Arbo12/répertoire/fichiers

Arbo17 est du même acabit.

Comparaison récursive des deux arborescences: Les deux différences sont
1. arbre.ged
2. qques fichiers ont été déplacés de Recherches (mon répertoire d'attente) à Sources (mon répertoire officiel)

J'ai effectué les tests suivants :
- ArboTest0 = Arbo17/arbre.ged  (1 seul fichier) ==> tout est instantané
- ArboTest1 = Arbo17 + Arbo12/arbre.ged qui vient écraser Arbo17/arbre.ged  ==> tout est instantané
- ArboTest2 = Arbo12 + Arbo17/arbre.ged qui vient écraser Arbo12/arbre.ged   ==> tout est instantané

Je passe à
- ArboTest4 = Arbo17, et je supprime un par un les fichiers dans Sources, je teste à chaque fois dans Ancestris 11.
Finalement, je trouve assez vite qu'en supprimant un fichier, tout rentre dans l'ordre.

Je créé alors l'arborescence suivante avec seulement 2 fichiers:
- ArboTest5 = Arbo17/arbre.ged + Sources/fichier.jpg
Et là je reproduis le problème !

Ce fichier jpg, il m'a l'air complètement normal, il fait partie d'une série de 5 photos que j'ai prises aux Archives récemment, et celui là est un acte de naissance. Pourquoi ce fichier là corrompt tout ? Et pas les 4 autres, je ne sais pas.

J'ai alors tenté de convertir le fichier jpg en png, puis retour en jpg, et là je n'ai plus les 8 secondes, mais j'ai un petit qqch qui fait que j'ai un délai.

@FredericL, merci pour la méthodo d'investigation, je vous envoie le fichier par mail pour tentative de débug, et voir pourquoi Ancestris réagit aussi mal.
@Zurga, je n'ai pas eu le temps d'investiguer plus avant la voie profiling.

Title: Re: Lenteur Ancestris
Post by: FredericL on January 19, 2022, 23:38:03
Bonsoir,

OK, parfait, j'ai reçu la photo, je la teste demain !

Bien à vous,
Frédéric
Title: Re: Lenteur Ancestris
Post by: Zurga on January 20, 2022, 09:14:44
Quelle est la taille de ce fichier ?
Est-il codé en progressive jpg ?

Zurga
Title: Re: Lenteur Ancestris
Post by: FredericL on January 20, 2022, 16:41:53
Bonjour Thierry,

Avec Ancestris 12, je viens de rajouter l'image reçue telle qu'elle à la généalogie Bourbon, à l'événement général de l'individu, ou dans une source de naissance, à l'individu pris au hasard I207. Un peu de délai à l'intégration de la photo la première fois, mais quasi instantané ensuite.
J'ai refais la même chose après avoir resauvegardé la photo en jpg avec gimp. Pas de différence.

En revanche en v11 le délai est bien là et le CPU monte à 105% pendant 3-5 secondes, que ce soit avec la photo originale ou resauvegardée. La photo fait 1,5 Mo ce qui n'est pas gros. Pour une autre photo de 3Mo c'est plus rapide. Cette photo a beaucoup de texte scanné, c'est peut-être plus long à décompresser en mémoire. Cela ne semble pas que lié à sa taille.

Le v12 a manifestement amélioré la performance mais je vais creuser quand même pour voir si on peut optimiser pour ce type de photo, pour autant que j'arrive à voir ce que cette photo a de particulier:
- La ligne qui dure longtemps, c'est la ligne "1448 bi = reader.read(0, param);" dans BufferedImage read(stream) du module imageIO.java. C'est du java standard.

Plus à suivre... Si Zurga tu veux ajouter qqchose.

Frédéric
Title: Re: Lenteur Ancestris
Post by: FredericL on January 20, 2022, 17:26:15
Bon, j'ai un peu optimisé le code mais le vrai moyen de réduire le délai est de réduire un peu la taille et la qualité de l'image. J'ai aussi décoché progressif.

A noter, il faut éviter de mettre une image lourde en image général de l'individu car c'est celle qui est affichée par défaut la plupart du temps.

A surveiller.
Frédéric
Title: Re : Re: Lenteur Ancestris
Post by: Zurga on January 20, 2022, 17:42:53
Plus à suivre... Si Zurga tu veux ajouter qqchose.
La photo est enregistrée en progressive Jpeg.
Pas sur que cela ait un impact, mais c'est largement possible.

Zurga
Title: Re : Lenteur Ancestris
Post by: Zurga on January 21, 2022, 10:23:09
Je corrige.
J'ai testé une image progressive et une image baseline, la différence de chargement est plus que notable.
C'est instantané pour une image baseline et très long pour une image progressive.

On va voir si on trouve une solution, mais je ne garanti rien.

Vous pouvez en revanche changer votre paramètre d'enregistrement de l'image pour supprimer l'aspect progressif de cette image.

Zurga
Title: Re : Lenteur Ancestris
Post by: daucourt on January 23, 2022, 20:46:02
Donc pour résumer, et si j'ai bien compris :
- solution de contournement n°1 : utiliser des jpeg baseline (et non pas des progressive)
- solution de contournement n°2 : utiliser ancestris 12 (et non pas 11)

J'allais vous répondre que je n'ai aucune raison d'avoir des jpeg progressive, et que des jpeg baseline me suffisent. Ce qui est vrai, et j'ai transformé tous mes jpeg de progressive en baseline en utilisant la commande:

Code: [Select]
jpegtran -copy all -outfile out.jpg in.jpg
Cette commande a l'avantage de ne pas faire de ré-encodage jpg, donc pas de perte de qualité, et le copy all permet de garder toutes les méta-datas (horodatages, point gps, etc).

Après investigation, en regardant les noms des fichiers que j'ai du transformer, je m'aperçois que mon scanner produit des progressive, et mon téléphone produit des progressive. Donc le problème va sûrement réapparaître. Donc la solution de contournement n°2 va s'imposer. Mais j'utilise Debian stable, et je préfère les versions stable. Je n'ai pas encore cherché quels sont les avantages de la v12 qui me feraient la choisir, hormis évidemment un meilleur traitement des jpeg progressive.

Merci beaucoup à tous les deux pour votre temps, vos investigations et votre aide.