Programmation lock free - les techniques des pros (1ere partie)Jean-Philippe BEMPEL
La scalabilité des applications est une préoccupation importante. Beaucoup de pertes en scalabilité proviennent de code contenant des locks qui produisent une importante contention en cas de forte charge.
Dans cette présentation nous allons aborder différentes techniques (striping, copy-on-write, ring buffer, spinning, ...) qui vont nous permettre de réduire cette contention ou d'obtenir un code sans lock. Nous expliquerons aussi les concepts de Compare-And-Swap et de barrières mémoires.
Retour d'expérience : gérer des flux vidéos multiples de manière optimiséeSilicon Comté
Présentation d'Eric Beuque de la société Jet1oeil, lors du digital apéro du mardi 5 novembre 2019.
Sujet : développer un système de vidéoprotection performant.
Programmation lock free - les techniques des pros (2eme partie)Jean-Philippe BEMPEL
La scalabilité des applications est une préoccupation importante. Beaucoup de pertes en scalabilité proviennent de code contenant des locks qui produisent une importante contention en cas de forte charge.
Dans cette présentation nous allons aborder différentes techniques (striping, copy-on-write, ring buffer, spinning, ...) qui vont nous permettre de réduire cette contention ou d'obtenir un code sans lock. Nous expliquerons aussi les concepts de Compare-And-Swap et de barrières mémoires.
Programmation lock free - les techniques des pros (1ere partie)Jean-Philippe BEMPEL
La scalabilité des applications est une préoccupation importante. Beaucoup de pertes en scalabilité proviennent de code contenant des locks qui produisent une importante contention en cas de forte charge.
Dans cette présentation nous allons aborder différentes techniques (striping, copy-on-write, ring buffer, spinning, ...) qui vont nous permettre de réduire cette contention ou d'obtenir un code sans lock. Nous expliquerons aussi les concepts de Compare-And-Swap et de barrières mémoires.
Retour d'expérience : gérer des flux vidéos multiples de manière optimiséeSilicon Comté
Présentation d'Eric Beuque de la société Jet1oeil, lors du digital apéro du mardi 5 novembre 2019.
Sujet : développer un système de vidéoprotection performant.
Programmation lock free - les techniques des pros (2eme partie)Jean-Philippe BEMPEL
La scalabilité des applications est une préoccupation importante. Beaucoup de pertes en scalabilité proviennent de code contenant des locks qui produisent une importante contention en cas de forte charge.
Dans cette présentation nous allons aborder différentes techniques (striping, copy-on-write, ring buffer, spinning, ...) qui vont nous permettre de réduire cette contention ou d'obtenir un code sans lock. Nous expliquerons aussi les concepts de Compare-And-Swap et de barrières mémoires.
Samir ROUABHI's slides for the presentation "The Future of Javascript" in The Algiers Developer Meetup (http://algiers-meetup.org/) 3rd of october, 2015
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
Votre mission, si vous l'acceptez : collecter chez chaque client 500 métriques par seconde sur un réseau Modbus, stocker plusieurs jours de données localement, et pousser des métriques sous échantillonnées dans le cloud. Les contraintes incluent la remontée des contextes de défaut, l’envoi de commande sécurisée depuis le cloud, l’isolation des données entre clients, la connexion temps réel via websocket, la gestion des coupures de courant et d’internet. Le système tourne sur une PINE64, avec une base de donnée open source française !
The Future of JavaScript, presented by Samir Rouabhi at the 3rd edition of Algiers Developer Meetup, which was held at Djezzy Training Center on October 3rd, 2015
Slides utilisée pour le premier meetup Unity3D Lyon. Unity va de l'avant avec la nouvelle branche 2018. Un tas de changements sont en cours de préparation, et d'autre déjà là et utilisables.
La programmation parallèle est désormais une incontournable solution aux problèmes de performance. Ce n’est pas la seule, mais elle ne peut être ignorée. Les nombreux coeurs et CPUs qui peuplent nos serveurs en sont la preuve.
Elle peut aussi s’utiliser plus souvent qu’on pourrait le penser. Que ce soit pour diminuer les temps de réponse ou augmenter le débit.
Nous vous proposons un état des lieux. Quels sont les usages? Quel est le degré de facilité? Comment se prémunir de la complexité? CPU ou GPU?
À l’aide d’exemples de code, tout ce qui est nécessaire de mettre dans le cartable du développeur vivant dans l’air du temps.
La programmation parallèle est désormais une incontournable solution aux problèmes de performance. Ce n'est pas la seule, mais elle ne peut être ignorée. Les nombreux coeurs et CPUs qui peuplent nos serveurs en sont la preuve.
Elle peut aussi s'utiliser plus souvent qu'on pourrait le penser. Que ce soit pour diminuer les temps de réponse ou augmenter le débit.
Nous vous proposons un état des lieux. Quels sont les usages? Quel est le degré de facilité? Comment se prémunir de la complexité? CPU ou GPU?
À l'aide d'exemples de code, tout ce qui est nécessaire de mettre dans le cartable du développeur vivant dans l'air du temps.
Comment développer un serveur métier en python/C++cppfrug
Quelles sont les problématiques d'interfaçage, les avantages/inconvénients des langages, la stratégie de code, etc. dans le développement d'un serveur métier ?
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Sébastien Prunier
Les architectures distribuées soulèvent un certains nombre de problématiques en terme de traçabilité : détection des anomalies, suivi des utilisateurs, mesure des performances des différents services … Durant cette session, nous vous montrerons - démonstration à l'appui - comment nous avons apporté une solution simple à ces problématiques, en mettant en place un système de consolidation de logs avec Node.js et MongoDb.
Poitou Charentes JUG - mai 2013 - http://www.poitoucharentesjug.org
Dans cet exposé, on présentera OMicroB, une machine virtuelle OCaml pour microcontrôleurs à faibles ressources, inspirée des travaux précédents sur le projet OCaPIC. Cette machine virtuelle, destinée à être exécutée sur diverses architectures matérielles (AVR, PIC, ARM, ...) permet ainsi de factoriser le développement d’applications, mais aussi de généraliser l’analyse et le débogage du bytecode associé, tout en permettant un usage précautionneux de la mémoire. On cible alors des programmes ludiques ou de domotiques destinés à être exécutés sur des microcontrôleurs à faibles ressources, en insistant sur les particularités inhérentes à la programmation de systèmes embarqués.
Le domaine des architectures reconfigurables est un domaine en extension il est nécessaire de faire des travaux de recherches sur :Architectures basse consommation de puissance (Low- Power)Architectures hétérogène (HARD + SOFT)Co-conception (Co-Design)Outils d’estimation de performances haut niveauOutils d’exploration de l’espace de conception
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
Always wanted to control your IoT device without SSH'ing into it? In this talk we will show how WebSockets, MQTT and a set of custom go/js libraries can help in managing remotely your IoT device without knowing its IP address. Learn how you can use the Arduino Create Agent to easily deploy containers, remotely. A journey on Docker client, APT command line, sockets, systemd and much more on Arm and Intel Linux devices.
Samir ROUABHI's slides for the presentation "The Future of Javascript" in The Algiers Developer Meetup (http://algiers-meetup.org/) 3rd of october, 2015
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
Votre mission, si vous l'acceptez : collecter chez chaque client 500 métriques par seconde sur un réseau Modbus, stocker plusieurs jours de données localement, et pousser des métriques sous échantillonnées dans le cloud. Les contraintes incluent la remontée des contextes de défaut, l’envoi de commande sécurisée depuis le cloud, l’isolation des données entre clients, la connexion temps réel via websocket, la gestion des coupures de courant et d’internet. Le système tourne sur une PINE64, avec une base de donnée open source française !
The Future of JavaScript, presented by Samir Rouabhi at the 3rd edition of Algiers Developer Meetup, which was held at Djezzy Training Center on October 3rd, 2015
Slides utilisée pour le premier meetup Unity3D Lyon. Unity va de l'avant avec la nouvelle branche 2018. Un tas de changements sont en cours de préparation, et d'autre déjà là et utilisables.
La programmation parallèle est désormais une incontournable solution aux problèmes de performance. Ce n’est pas la seule, mais elle ne peut être ignorée. Les nombreux coeurs et CPUs qui peuplent nos serveurs en sont la preuve.
Elle peut aussi s’utiliser plus souvent qu’on pourrait le penser. Que ce soit pour diminuer les temps de réponse ou augmenter le débit.
Nous vous proposons un état des lieux. Quels sont les usages? Quel est le degré de facilité? Comment se prémunir de la complexité? CPU ou GPU?
À l’aide d’exemples de code, tout ce qui est nécessaire de mettre dans le cartable du développeur vivant dans l’air du temps.
La programmation parallèle est désormais une incontournable solution aux problèmes de performance. Ce n'est pas la seule, mais elle ne peut être ignorée. Les nombreux coeurs et CPUs qui peuplent nos serveurs en sont la preuve.
Elle peut aussi s'utiliser plus souvent qu'on pourrait le penser. Que ce soit pour diminuer les temps de réponse ou augmenter le débit.
Nous vous proposons un état des lieux. Quels sont les usages? Quel est le degré de facilité? Comment se prémunir de la complexité? CPU ou GPU?
À l'aide d'exemples de code, tout ce qui est nécessaire de mettre dans le cartable du développeur vivant dans l'air du temps.
Comment développer un serveur métier en python/C++cppfrug
Quelles sont les problématiques d'interfaçage, les avantages/inconvénients des langages, la stratégie de code, etc. dans le développement d'un serveur métier ?
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Sébastien Prunier
Les architectures distribuées soulèvent un certains nombre de problématiques en terme de traçabilité : détection des anomalies, suivi des utilisateurs, mesure des performances des différents services … Durant cette session, nous vous montrerons - démonstration à l'appui - comment nous avons apporté une solution simple à ces problématiques, en mettant en place un système de consolidation de logs avec Node.js et MongoDb.
Poitou Charentes JUG - mai 2013 - http://www.poitoucharentesjug.org
Dans cet exposé, on présentera OMicroB, une machine virtuelle OCaml pour microcontrôleurs à faibles ressources, inspirée des travaux précédents sur le projet OCaPIC. Cette machine virtuelle, destinée à être exécutée sur diverses architectures matérielles (AVR, PIC, ARM, ...) permet ainsi de factoriser le développement d’applications, mais aussi de généraliser l’analyse et le débogage du bytecode associé, tout en permettant un usage précautionneux de la mémoire. On cible alors des programmes ludiques ou de domotiques destinés à être exécutés sur des microcontrôleurs à faibles ressources, en insistant sur les particularités inhérentes à la programmation de systèmes embarqués.
Le domaine des architectures reconfigurables est un domaine en extension il est nécessaire de faire des travaux de recherches sur :Architectures basse consommation de puissance (Low- Power)Architectures hétérogène (HARD + SOFT)Co-conception (Co-Design)Outils d’estimation de performances haut niveauOutils d’exploration de l’espace de conception
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
Always wanted to control your IoT device without SSH'ing into it? In this talk we will show how WebSockets, MQTT and a set of custom go/js libraries can help in managing remotely your IoT device without knowing its IP address. Learn how you can use the Arduino Create Agent to easily deploy containers, remotely. A journey on Docker client, APT command line, sockets, systemd and much more on Arm and Intel Linux devices.
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...Paris Open Source Summit
La mise-à-jour de firmwares "Over-The-Air" sur microcontrôleur a toujours été un sujet ambitieux et pourtant primordial pour sécuriser une application IoT. Le système d'exploitation RIOT (https://riot-os.org) fournit désormais les briques logicielles pour réaliser des mise-à-jour de firmware en utilisant des protocoles standards et sécurisés de bout-en-bout.
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, ArduinoParis Open Source Summit
IoT is at the peak of the hype cycle - what they call the 'Peak of Inflated Expectations’. The complexity of the cybersecurity landscape is at an all-time high, with security researchers, vendors and even governments all trying to come to a consensus for making the cyber-world a safer place. In this world of lightning-fast development cycles, it may intuitively feel like security gets left behind. The battle over standards is always a struggle. The unresolved problem of software updates and short vendor support cycle combined with the lack of effort into security makes these devices an easy target. Companies not only need to update their technology stack for the evolving security landscape but also their mindset, processes and culture. This talk will shine a light on some of the challenges that today’s executives face in finding and fixing systemic problems in and outside of security through people, tools and understanding.
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...Paris Open Source Summit
"Cette présentation a pour but de présenter MirageOS et ses applications à l'écriture d'applications IoT sécurées. En particulier, MirageOS permet de développer des applications d'infrastructure réseau --- firewalls, proxy VPN, serveurs d'emails, etc. --- qui peuvent être déployées sur des processeurs embarqués de type ARMv8, ESP32 ou RISC-V. Nous expliquerons comment nous nous appuierons sur cette couche d'infrastructure entièrement open-source pour développer OSMOSE, une plateforme sécurisée et décentralisée permettant de construire des application IoT centrées sur l'utilisateur et le respect de sa vie privée.
"
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...Paris Open Source Summit
The document discusses anomaly detection in time series data using WarpScript functions. It begins with an introduction to time series data and WarpScript. Key techniques for detecting anomalies discussed include threshold-based methods, statistical tests, and forecast models. The document also covers analyzing seasonality in time series and methods for handling multiple seasonal patterns.
This document is an introduction to scikit-learn, an open-source machine learning library for Python. It discusses predictive modeling and how scikit-learn fits into this domain. The presentation covers the basics of machine learning and predictive modeling, provides an overview of scikit-learn including its API and development process, and demonstrates examples of using common algorithms like logistic regression, support vector machines, and random forests.
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...Paris Open Source Summit
1) The document discusses topics related to open source, AI, quantum computing, and Europe's role in these emerging technologies.
2) It notes that Europe lags behind countries like the US and China in areas such as AI research publications and funding for emerging technologies.
3) The document calls for Europe to develop coordinated strategies and increase investment in strategic technologies to become a global leader again in fields like AI, healthcare, climate solutions, and space exploration.
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...Paris Open Source Summit
ONLYOFFICE développée par Ascensio System SIA, est une suite bureautique open-source basée sur l'élément Canvas de HTML5, qui offre une gamme complète d’outils d’édition en ligne des documents texte, feuilles de calcul et présentations.
Cette présentation commence par l’aperçu des principes de base :
- support de tous les formats courants,
- riche éventail d’outils de la mise en forme,
- affichage du contenu de manière identique, quel que soit le navigateur utilisé,
- ressources permettant d’étendre les fonctionnalités des éditeurs,
- capacités avancées de co-édition,
- transfert de données sécurisé en temps réel.
Le nombre des universités et des écoles qui optent pour les alternatives open source aux solutions populaires offertes par les grandes marques, augmente chaque année. Les solutions de ONLYOFFICE sont actuellement utilisées par plus de 30 établissements d’enseignement en France tels que treize Universités de la Sorbonne, l’Université de Grenoble, l’Université de Nantes, l’École Nationale d'Ingénieurs de Brest, le l'établissement public Campus Condorcet, etc.
Dans cette partie, Jeremy Maton, l’Administrateur Systèmes et Réseaux à l’Institut de Biologie de Lille, va présenter comment ONLYOFFICE est intégrée au sein de leur unité de recherches et aide à organiser le flux de travail.
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...Paris Open Source Summit
Stratégie, risques liés à l'adoption de l'open source... Comment un modèle de gouvernance fort peut rendre votre parcours open source le plus efficace.
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...Paris Open Source Summit
Dans une banque vieille de 200 ans, il ne parait pas forcément évident au premier abord de convaincre d’une démarche Open Source. Et pourtant, nous l’avons fait !
Dans cette conférence, nous vous expliquerons comment l’idée de publier du code Open Source est née, quels sont les leviers et opportunités que nous avons actionnés pour convaincre nos différentes directions. Nous expliquerons également les difficultés rencontrées et les choix retenus.
Si vous aussi, vous êtes dans une banque, une assurance ou encore un groupe industriel, et que vous cherchez des clés pour initier une démarche Open Source, alors venez nous voir !
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...Paris Open Source Summit
#Business #Apps - Track - Gestion documentaire et collaboration
VITAM est une solution d'archivage open source utilisée pour des volumes élevés jusqu'à des milliards de documents. C'est un système distribué qui peut être implémenté aussi bien sur du bare metal que du cloud OpenStack, utilisant de 3 à plus de 100 VM.
Il est conçu pour être efficace et très facile à administrer. Les principales opérations techniques sont entièrement automatisées.
Cette présentation vous donnera les principales informations sur l'architecture VITAM, la façon de l'installer sur votre infrastructure et les pièges classiques à éviter. Elle vous permettra aussi de rencontrer des techniciens impliqués dans le développement de VITAM.
3. Histoire 1/2
Embellir Android !
● Animations, fonds d'écran animés, animation de démarrage...
Un outil contre la "diversification"
● "Write once, run anywhere"
● Tous les GPUs (extensions OpenGL)
● Introduction en interne dans Android 2.x
Evolution vers les calculs
● Exécution optimale partout.
● Publique avec Android 3.x
4. Histoire 2/2
Dépréciation de la partie rendu graphique
● Annoncée avec Jelly Bean (Android 4.1)
Une note dans la documentation
● Deprecation Notice: Earlier versions of Renderscript included
an experimental graphics engine component. This component is
now deprecated as of Android 4.1 [...] If you have apps that render
graphics with Renderscript, we highly recommend you convert
your code to another Android graphics rendering option.
Pourquoi ce changement ?
● Les développeurs préfèrent OpenGL
● OpenGL plus utilisé en interne aussi.
5. Renderscript, c'est
Un outil pour les calculs
● Ne remplace ni le SDK, ni le NDK.
● Répond à des problématiques spécifiques
Portabilité
● Android 3.0 +
Performance
● CPU (architecture, coeurs, instructions)
● GPU, bientôt... (ARM Mali-T604 GPU)
Simplicité d'utilisation
● Génération de code
6. Au coeur de RS
code.rs
Code: script.rs
● Langage C99
● API pour le calculs
APK
bytecode
RS
Compilations via LLVM
● Compilation en bytecode
● Compilation (JIT) sur le client
Client binaire
Execution partout RS
GPU
● Runtime Renderscript
● Coeurs CPU + GPU
CPU CPU
#1 #2
9. Exemple
Par exemple, un exemple
● Application de filtres sur des photos/images
● Traitement du signal, calcul matriciel
● (Rappel : Cette application vaut dans les 1 milliards)
Un peu de code
● Améliorons les temps de calcul grâce à Renderscript !
11. // Création du script
Code : Filter.java
mRS = RenderScript.create(mContext);
mScript = new ScriptC_filter(mRS, mContext.getResources(), R.raw.
filter);
// Allocation de la mémoire contenant le bitmap
mInAllocation = Allocation.createFromBitmap( mRS,
inputBitmap,
Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
// Allocation de la mémoire pour récupérer l'image générée
mOutAllocation = Allocation.createTyped(mRS, mInAllocation.
getType());
// Mise en place des paramètres
Matrix3f sepiaMatrix = new Matrix3f(mMatrix);
mScript.set_filter(sepiaMatrix);
// Appel du script (rsForEach)
mScript.forEach_root(mInAllocation, mOutAllocation);
// Copie du résultat dans le bitmap de sortie
mOutAllocation.copyTo(outputBitmap);
13. Résultats 2/2
Appareil (matériel) Java RS Gain
Nexus S
960 ms 280 ms x 3.4
(Exynos 1 GHz Cortex A8)
Galaxy Nexus
360 ms 80 ms x 4.5
(OMAP 4460 1,2 GHz dual-core)
Samsung Galaxy S2
340 ms 48 ms x 7.0
(1.2 GHz dual-core ARM Cortex-A9)
Samsung Galaxy S3
325 ms 49 ms x 6.6
(1.4 GHz quad-core ARM Cortex-A9)
Motorola Xoom
210 ms 26 ms x 8.0
(Tegra 2: 1GHz dual-core)
Nexus 7
180 ms 22 ms x 8.2
(Tegra 3: 1.3 GHz quad-core)
Intel AZ210 - Intel Orange San Diego
293 ms 59 ms x 4.9
(Intel Atom 1.6 Ghz Z2460 with HT - x86)
15. Conclusion
En bref
● La solution pour les problèmes de performance sur les calculs
● Intégration simplifiée
Pour la suite
● Calculs dans le GPU ?
● Meilleurs outils ?
● Maintenance par Google ?
16. Merci !
Merci !
● twitter : @sylvaingaland
● google plus : http://slvn.fr/+
● Code dispo sur : http://github.com/sgaland