[Neo4j] Probleme de performance Neo4j
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

[Neo4j] Probleme de performance Neo4j



  1. #1
    Loupsio

    [Neo4j] Probleme de performance Neo4j


    ------

    Bonjour à tous
    Je me doute que ce n'est pas un forum d'expert neo4j et ma question est assez spécifique, mais sait-on jamais, c'est peut être coté ordinateur que se trouvera la réponse et non pas coté base de donnée

    Pour faire court, j'ai 2 pc (laptop A : 4 coeurs, 16 giga de RAM, laptop B: 8 coeurs 16 giga de RAM) qui ont tout le reste identique dans le cadre de mon besoin (tournent tout deux sur windows, avec Neo4j 5.22.0, meme parametrage de neo4j dans le fichier neo4j.conf, meme script cypher qui tourne, et même données dans les DB, meme database avec les meme éléments indexés pour optimiser les requetes)

    je m'attendais à ce que le laptop B tourne plus rapidement le script Neo4j (vu qu'il a plus de CPU) mais au final il va bien plus lentement que le premier (2x plus lentement)
    Alors que pourtant il a plus de CPU et tout le reste est identique

    Quand je regarde la consommation des ressources, mon processeur n'est utilisé qu'a 10% (pendant que le script tourne) ma memoire a 50% et le disque à 5% rien n'est donc surchargé, et il à de quoi augmenter en utilisation, il est loin d etre saturé en charge de travail, et pourtant il n'utilise pas les ressources disponibles et vas 2x moins vite

    Alors certes, peut etre que les paramétrages peuvent etre optimisés (bien que j'ai essayé), mais la ou ca m'ennuie, c'est que c'est les meme paramètres sur le laptop A qui est techniquement moins performant, donc à paramètres égaux, laptop B devrait être légèrement plus rapide, voir a minima etre à égalité

    j'ai tenté d'augmenter la memoire utilisable dans les parametres du neo4j.conf :
    dbms.memory.heap.initial_size= 2G
    dbms.memory.heap.max_size=3G
    dbms.memory.pagecache.size=2G

    c'est actuellement les mêmes valeurs sur les deux laptop, mais j'ai tenté de les augmenter sur le laptop B voir si il consommerait plus, mais ca n'a rien changé
    j'ai également ajouté le parametre :
    dbms.threads.worker_count=8 (que j'ai testé avec comme valeurs 16, 10, 8 et 5 threads pour paralléliser), mais pareil aucune différence,

    Comment se fait-il que le meme script tourne plus rapidement sur mon pc moins performant et que sur celui ci , il n'arrive pas a utiliser plus de CPU pour augmenter la vitesse de traitement (et a minima etre au moins aussi rapide que l'autre)


    j'ai deja tenté chatGPT pour résoudre le problème, il revient tout le temps sur le fait qu'il puisse y avoir un goulot d étranglement I/O, (ce qui n'est pas le cas car le disque est à 5%) ou de modifier les paramètres neo4j.conf, ce que j'ai fait en vain, mais qui de toute facon n'est pas le coeur du problème puisqu'il y a la meme config sur l'autre pc qui pour le coup est plus rapide), ou encore sur le fait d'optimiser le code cypher (ce qui n'est pas un mauvais argument mais ne change rien encore une fois au fait que c'est également le même code sur les 2 pc et donc n'explique pas la différence de performance entre les deux

    Merci pour vos réponses

    -----

  2. #2
    f6exb

    Re : [Neo4j] Probleme de performance Neo4j

    Bonjour,
    Les vitesses d'horloge sont les mêmes ?
    Seuls les faucons volent. Les vrais restent au sol.

  3. #3
    MissJenny

    Re : [Neo4j] Probleme de performance Neo4j

    je ne connais pas du tout ce logiciel mais apparemment il sert à dessiner des représentations graphiques de données. C'est donc peut-être la carte graphique de l'ordi qui est le facteur limitant.

  4. #4
    Loupsio

    Re : [Neo4j] Probleme de performance Neo4j

    Merci pour votre intérêt, pour répondre a vos questions :

    @ f6exb : non , le laptop B (8 coeurs) est a 4GHz, tandis que le laptop A (4 coeurs) est a 3GHz, sauf erreur de ma part, en plus d'avoir le double de coeur, le fait d'etre a 4GHz au lieu de 3GHz , c'est censé être plus performant,c'est pour ca que je suis surpris que ca ne oit pas le cas là

    @ MissJenny : Ce n'est pas un logiciel, mais une base de donnée (comme Oracle SQL par exemple, sauf que c'est une base NoSQL, et que le langage est Cypher au lieu de SQL), et neo4j n'utilise pas la carte graphique pour le calcul et les requetes, il passe uniquement par le CPU

  5. A voir en vidéo sur Futura
  6. #5
    polo974

    Re : [Neo4j] Probleme de performance Neo4j

    Voir le paramétrage BIOS, gestion de performance ou un truc du genre.
    Voir le système, même "rayon", et réglages de gestion de consommation.

    Matériellement, voir la propreté du ventirad (genre gros paquet de poussière qui empêche l'air de sortir du radiateur (un truc hyper chiant à nettoyer, donc toujours éviter de poser le pc sur du tissus)).

    Quel OS?

    Sous linux, c'est facile de tester avec qq lignes de shell.
    Sous windows, ??? €€€
    Dernière modification par polo974 ; 19/08/2024 à 19h52. Motif: parenthèses manquantes
    Jusqu'ici tout va bien...

  7. #6
    Loupsio

    Re : [Neo4j] Probleme de performance Neo4j

    Matériellement les performances sont bonnes (il ne chauffe pas excessivement, ce qui est souvent le cas quand la poussière s'accumule généralement), mais surtout si au lieu de leur donner une grosse tache a effectuer par neo4j, je leur donne pleins de petites taches a enchainer (toujours avec neo4j mais des petits trucs rapide coté neo4j, par contre en en enchainant plein), alors dans ce cas le laptop B (8 coeurs) est bien plus rapide comme attendu (là on est sur du 10x plus rapide, il a pu faire 1,2 millions de requetes, alors que dans le même temps celui a 4 coeurs n'en est qu'a 130 000 en lui donnant les memes choses a faire, ce qui me parait plus cohérent,
    La lenteur est principalement quand je donne directement le bébé a gérer par Neo4j et que c'est lui qui doit effectuer une grosse tache bien consommatrice, comme si neo4j n'arrivais pas a exploiter les performance du pc pour faire des gros calculs, car uniquement dans ce cas, le laptop A devient plus rapide a effectuer la meme chose alors qu'il est moins performant,

  8. #7
    MissJenny

    Re : [Neo4j] Probleme de performance Neo4j

    Tu parles de tâches à enchaîner. Si tu veux dire que chaque tâche a besoin des résultats de la tâche précédente, je m'attendrais à ce que le job ne tourne pas plus vite sur la machine à 8 processeurs par rapport à celle à 4 processeurs. Mais pas qu'il tourne plus lentement bien sûr.

  9. #8
    Paraboloide_Hyperbolique

    Re : [Neo4j] Probleme de performance Neo4j

    Bonjour,

    A tout hasard, regarder les capacités des mémoires caches sur les 2 PCs ?

    Sous toute réserves de mes compétences (très limitées dans ce domaine), mon hypothèse serait un problème au niveau de la gestion des mémoires caches qui se passerait moins bien sur le laptop B pour de grosses tâches.

  10. #9
    polo974

    Re : [Neo4j] Probleme de performance Neo4j

    Bah, vu que t'es pas au taquet en ram, mets:
    dbms.memory.heap.max_size=8G

    Et essayer de réduire le nb de thread à 4. Donc moins de demande éparpillée ram.

    On ne sait pas trop ce que sont tes mesures de charge (cpu, ram, disque) ni sur quoi comme OS...

    J'ai l'impression que java part en swap dans la vm java.

    Sinon, il y a quelques sujets sur les perfs zarb de neo4j sur le web (et il semble qu'il faille être un "moustachu" dans les optimisations de requêtes..)
    Jusqu'ici tout va bien...

  11. #10
    Loupsio

    Re : [Neo4j] Probleme de performance Neo4j

    @polo974
    Bah, vu que t'es pas au taquet en ram, mets:
    dbms.memory.heap.max_size=8G
    Et essayer de réduire le nb de thread à 4. Donc moins de demande éparpillée ram.
    Oui j'ai deja essayé les deux, ca ne change rien a la vitesse d'execution
    On ne sait pas trop ce que sont tes mesures de charge (cpu, ram, disque) ni sur quoi comme OS...
    Si si j'ai bien précisé que c'était windows
    les mesures de charges aussi ont été spécifié dans le premier message


    Sinon, il y a quelques sujets sur les perfs zarb de neo4j sur le web (et il semble qu'il faille être un "moustachu" dans les optimisations de requêtes..)
    C'est ce que je suis en train de me rendre compte, Car en fait quand j'avais reussi a avoir de meilleu perf, en fait ca devait etre li a un autre parametre changé (probablement le dbms.tx_state.memory_allocatio n=ON_HEAP vers OFF_HEAP
    car je suis reparti de zero et en fait dans tout les cas, le pc techniquement plus performant est finalement 2x plus lent, (que je leur decoupe la charge en plusieurs petite tache ou que je lance une grosse charge unique)


    @paraboloide :
    A tout hasard, regarder les capacités des mémoires caches sur les 2 PCs ?
    Sur laptop 8 coeurs :

    L2CacheSize L3CacheSize
    ----------- -----------
    4096 16384

    sur laptop 4 coeurs
    L2CacheSize L3CacheSize
    ----------- -----------
    1024 8192

    Mais je ne saurai interpreter ce resultat
    Dernière modification par Loupsio ; 21/08/2024 à 00h03.

  12. #11
    polo974

    Re : [Neo4j] Probleme de performance Neo4j

    oups, j'avais zappé windows...

    piste improbable:
    j'ose espérer que les 2 windows et que tous les exécutables en jeu sont tous 64 bits.
    un binaire 32 bits peut être plus performant tant qu'il n'est pas en limitation d'espace d'adressage (dans les 2Go).

    sinon, là, je sèche...
    Jusqu'ici tout va bien...

  13. #12
    Paraboloide_Hyperbolique

    Re : [Neo4j] Probleme de performance Neo4j

    Citation Envoyé par Loupsio Voir le message
    @polo974

    @paraboloide :

    Sur laptop 8 coeurs :

    L2CacheSize L3CacheSize
    ----------- -----------
    4096 16384

    sur laptop 4 coeurs
    L2CacheSize L3CacheSize
    ----------- -----------
    1024 8192

    Mais je ne saurai interpreter ce resultat
    Ok, le laptop B (8 coeurs) a plus de cache. Donc à priori mon hypothèse tombe à l'eau.

  14. #13
    MissJenny

    Re : [Neo4j] Probleme de performance Neo4j

    ce serait peut-être intéressant de comparer les performances des deux machines avec d'autres programmes.

  15. #14
    Loupsio

    Re : [Neo4j] Probleme de performance Neo4j

    ce serait peut-être intéressant de comparer les performances des deux machines avec d'autres programmes.
    Sur les autres trucs le laptop B (8 coeurs est plus performant) j'avais deja comparé pour d'autres taches (des trucs du style, webscrapping python, entrainement de modele de ML et DL, indexation et requetes elasticsearch etc...) il n'y a qu'avec neo4j que j'observe ce comportement

    sinon, là, je sèche...
    Bon bah je vais lâcher l'affaire et accepter la fatalité, j'espere cependant que j'aurai pas le meme comportement sur serveur, car la je faisais des tests pour voir comment optimiser la vitesse en fonction de la machine, mais pour ensuite faire sur plus gros volume sur un serveur, ducoup je lançais les traitement en local sur une base de 7 millions de données, mais derrière c'est parce que je vais devoir l'installer sur une VM (qui sera plus performante que mes pc techniquement) et la base de donnée totale fera entre 40 et 50 millions de données, donc si il ne tire pas parti d'une installation sur un système plus performant et qu'il n'est pas plus rapide sur VM, ca va etre problématique sur les 50 millions de données

    Merci a tous

  16. #15
    MissJenny

    Re : [Neo4j] Probleme de performance Neo4j

    je ne connais pas le fonctionnement des processeurs multi-coeurs mais j'ai utilisé un système multi-processeurs et il y avait deux modes de fonctionnement : soit on laisse le système d'expoitation décider quel processus tourne sur quel processeur, soit en utilisant un compilateur spécial, on peut spécifier dans le code quelle partie doit s'exécuter sur quel processeur (en réalité c'était un peu fictif parce que le système d'exploitation pouvait redistribuer les ressources). Je me dis que s'il en estr de même pour le multi-coeurs, peut-être que c'est ce que fait ton logiciel : essayer de répartir la charge sur les divers coeurs au lieu de laisser faire Windows. Et il le ferait mal. Si c'est bien ce qui se passe, il n'y a pas de raison que le problème perdure quand tu vas passer sur un cluster.

  17. #16
    vgondr98

    Re : [Neo4j] Probleme de performance Neo4j

    Je ne connais pas Cypher donc peut-être que ma question est à coté de la plaque.
    Le code cypher en question est multithreadé ?
    https://neo4j.com/developer-blog/spe...allel-runtime/

  18. #17
    vgondr98

    Re : [Neo4j] Probleme de performance Neo4j

    Citation Envoyé par Loupsio Voir le message
    La lenteur est principalement quand je donne directement le bébé a gérer par Neo4j et que c'est lui qui doit effectuer une grosse tache bien consommatrice
    Si c'est une grosse tâche, on peut supposer qu'elle tourne sur 1 seul cœur. On peut le voir en faisant une capture d'écran du gestionnaire des tâches.
    Si le laptop B tourne a 4GHz avec les 8 cœurs et que le laptop A tourne à 3GHz avec 4 cœurs alors il est possible que 1 cœur du laptop B tourne à 4/8 Ghz soit 0.5 Ghz et que 1 coeur du laptop A tourne à 3/4 soit 0.75 Ghz, non ?
    Cela fait un rapport de 1.5 entre 1 coeur du laptop A et 1 coeur du laptop B, ce qui est cohérent avec le
    Citation Envoyé par Loupsio Voir le message
    2x plus lentement

  19. #18
    umfred

    Re : [Neo4j] Probleme de performance Neo4j

    même type de disque dur de chaque côté ? (SSD/HDD)
    même type de processeur ? (Xeon/non Xeon)

  20. #19
    Loupsio

    Re : [Neo4j] Probleme de performance Neo4j

    Je ne connais pas Cypher donc peut-être que ma question est à coté de la plaque.
    Le code cypher en question est multithreadé ?
    https://neo4j.com/developer-blog/spe...allel-runtime/
    Pas initialement, mais par la suite j'ai mis des threads je n'ai pas vu de differences

    Si c'est une grosse tâche, on peut supposer qu'elle tourne sur 1 seul cœur. On peut le voir en faisant une capture d'écran du gestionnaire des tâches.
    Si le laptop B tourne a 4GHz avec les 8 cœurs et que le laptop A tourne à 3GHz avec 4 cœurs alors il est possible que 1 cœur du laptop B tourne à 4/8 Ghz soit 0.5 Ghz et que 1 coeur du laptop A tourne à 3/4 soit 0.75 Ghz, non ?
    l'argument se tient, mais comme je précisais plus haut :
    dbms.threads.worker_count=8 (que j'ai testé avec comme valeurs 16, 10, 8 et 5 threads pour paralléliser), mais pareil aucune différence,
    je n'ai pas vu de différences, et puisque le CPU n'était qu'a 10% le reste n'était pas pris par d'autres taches donc les 4GHz ne seraient pas divisé sur les 8 coeurs si les autres sont disponibles, si? je ne suis pas sur de ce coté la, mais en tout cas, j'avais du CPU largement disponible
    même type de disque dur de chaque côté ? (SSD/HDD)
    même type de processeur ? (Xeon/non Xeon)
    Toutes les différences son en faveurs du laptop B (en l'occurence le laptop B es bien sur du SSD)

  21. #20
    vgondr98

    Re : [Neo4j] Probleme de performance Neo4j

    Est-ce que le script cypher va à la même vitesse sur le laptop A pour la grosse tâche que tu mettes dbms.threads.worker_count=1 ou dbms.threads.worker_count=4 ou dbms.threads.worker_count=8 ?

    Au fait c'est quoi cette grosse tâche ? Une recherche, une insertion, une délétion, etc ?

Discussions similaires

  1. Problème souris Logitech Performance MX (ne fonctionne plus après MAJ drivers)
    Par invited0da5756 dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 13/08/2014, 01h11
  2. performance à 100%
    Par invitedcfe4b07 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 1
    Dernier message: 29/11/2013, 14h44
  3. [Brun] probleme amplificateur performance teknique ICBM 1000.2
    Par invitef8d4e6dd dans le forum Dépannage
    Réponses: 22
    Dernier message: 05/12/2011, 00h27
  4. performance
    Par invite340d16ab dans le forum Environnement, développement durable et écologie
    Réponses: 8
    Dernier message: 30/06/2011, 22h45
  5. The last performance...
    Par invite3a0844ce dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 36
    Dernier message: 08/07/2006, 21h04