PerfUG

Évènement

Meetup PerfUG [27/03/2019] : Génération de code, moteur Catalyst… Démystifions Apache Spark !

Apache Spark est un framework de calcul distribué écrit en Scala qui s’est largement démocratisé ces dernières années. Au cours des dernières versions, Apache Spark s’est doté d’un moteur SQL avec génération de code à la volée, qui lui permet de profiter des diverses optimisations existantes dans le domaine. Afin de comprendre en détail le fonctionnement de ce moteur SQL, nous allons réécrire une version simplifiée mais fonctionnelle du moteur qui s’appuie sur le même principe que le moteur Catalyst utilisé par Spark : étape…

Lire la suite
Évènement

Meetup PerfUG [13/02/2019] : Servir des Maps à haute perf : Concepts, Bottlenecks, Optimisations et Tests à l’échelle

Si demain tu te mettais à vouloir servir des données géospatiales à des milliers de personnes, comment t'y prendrais-tu? Cette question là, on se l'est posée il y a 4 ans, et on a appris plein (plein) de choses. Viens découvrir ce qui se cache derrière le rendu de maps, les bottlenecks associés et des exemples d'optimisations qu'on a pu appliquer. Si tu en veux plus, on te présentera notre démarche de test de charge avec les embûches qu'on a pu découvrir lorsqu'on dépasse les…

Lire la suite
Évènement

Meetup PerfUG [16/01/2019] : Its Just Too Slow How to Deliver Fast and Beautiful Images & Video

The average website page weight is 50% images and 25% video. As the images and videos delivered to mobile devices get larger and larger, the load time of websites gets slower and slower. Further complicating matters, there are thousands of screens and devices with varying resolutions and CPU power that receive this content. In this talk, we’ll examine strategies to send the perfect image or video to every device, ensuring a fast, beautiful rendering of your content. We’ll look at how to test our content,…

Lire la suite
Évènement

Meetup PerfUG [21/11/2018] : Go(lang) soyez plus fort que le garbage collector grâce l’escape analysis

Les caractéristiques du langage Go sont multiples: la concurrence, le typage statique et sa gestion de la mémoire par Garbage Collector. Mais bien avant que ce Garbage Collector entre en jeu le compilateur Go optimise la gestion de la mémoire en fonction de votre code grâce à ce qu’on appelle l’escape analysis. Voyons ensemble comment optimiser votre code Go pour limiter l'empreinte mémoire et moins solliciter le garbage collector et donc le CPU. Grâce à ces explications vous pourrez enfin y voir plus clair lorsque…

Lire la suite
Évènement

Meetup PerfUG [17/10/2018] : Comprendre les GC sur la JVM : Mode Avancé !

Depuis quelques années, le monde du GC sur la JVM évolue : G1 est par défaut sur le JDK9, Shenandoah est mis à disposition par Red Hat, un nouveau GC entre dans l'OpenJDK depuis le JDK 11: ZGC et Azul C4 est toujours là. Comme les GC "classiques" sont plutôt bien compris maintenant, cette présentation s'attardera sur les arcanes des plus récents. Nous allons expliquer le concurrent marking (tri-color marking), les specificités de G1, la Load Value Barrier de C4, les Brooks pointers de Shenandoah…

Lire la suite
Évènement

Meetup PerfUG [24/09/2018] : Angular et performances

ERRATUM : Suite à un problème logistique le meetup est décalé au lundi 24/09 Il nous aura fallu attendre 2 ans pour avoir cette nouvelle version du fameux framework de Google. L'objectif est ambitieux: devenir le framework front le plus performant. Nous vous proposons de soulever le capot pour comprendre ce qui rend Angular plus rapide. Nous parlerons de ce qui est proposé en natif (détection du changement, lazy loading, compilation...) mais aussi de ce que vous pouvez mettre en place (compilation AOT, tree shaking,…

Lire la suite
Évènement

Meetup PerfUG [26/06/2018] : Comment gérer un cluster Hadoop de 2800 noeuds et 150 M de conteneurs ?

Mettre en oeuvre un cluster de plus de 2800 noeuds, 150 millions de conteneurs yarn par jour nécessite de mettre en oeuvre des principes d’architecture pour scaler, des techniques d’investigation live de la production, de fabriquer (et faire scaler) des outils de monitoring pour comprendre ce qui tourne dans le cluster. Il faut prendre des décisions de capacity planning et aider les utilisateurs à tuner leur jobs. William nous propose un survol de ce qui est fait chez Criteo pour adresser ces problématiques.

Lire la suite
Évènement

Meetup PerfUG [26/06/2018] : Spring cloud et Zipkin à la rescousse du tracing distribué

Passer d'un monolithe à une architecture micro-services introduit de la complexité en terme de réseau, on ne peut donc plus logger de la même manière. En effet, comment savoir quelles instances de service ont traité une requête ? Comment faire transiter des logs entre mes services ? Où se situent les goulots qui ralentisse mon architecture ? Découvrons ensemble comment mettre en place une solution de tracing de requête dans un environnement distribué permettant de traiter toutes ces problématiques et ce avec une quantité de…

Lire la suite
Évènement

Meetup PerfUG : Traitement d’image sur GPU en C#

Le traitement d’image représente une partie coûteuse de nombreuses applications logicielles, du Backend Web au Machine Learning. Il est donc souvent nécessaire d’optimiser cette partie du code. Parallélisable, le traitement d’image bénéficie largement des capacités de bande passante mémoire et de calcul des cartes graphiques. Dans cette présentation nous verrons comment accélérer une librairie de traitement d’image écrite en C# (AForge). Nous commencerons par faire du code multithread CPU, puis nous porterons ce code sur GPU et nous descendrons de plus en plus bas dans…

Lire la suite
Archi & techno

PerfUG : CLR/JVM différences d’implémentation

Criteo utilise à la fois la .NET CLR et la JVM. A première vue il semble que ces 2 runtimes sont similaires: du byte code, un JIT, un GC, ... Mais en fait il y a des différences dans l'implémentation et dans la vision des applications ciblées et leurs besoins. Dans cette présentation nous verrons les avantages et inconvénients des différences entre ces 2 runtimes. Jean-Philippe Bempel est un développeur passioné par les performances, les runtimes (JVM, CLR) et adepte de Mechanical Sympathy. Il a…

Lire la suite