2. Alter Way
WOLPHIN
⇒ Facturer les consommations en conteneurs
- métrologie
- monitoring
- orchestration
- facturation
⇒ 3/4 d’avancement sur deux ans, fin Janvier 2019
⇒ Prototype quasi finalisé, livraison Juillet 2018
P. 2
OSIS Cloud - présentation Wolphin
OSIS CloudJuin 2018
3. Alter Way
WOLPHIN
⇒ Facturer les consommations en conteneurs
- métrologie ✓
- monitoring ✓
- orchestration ✓
- facturation ✓
⇒ 3/4 d’avancement sur deux ans, fin Janvier 2019
⇒ Prototype quasi finalisé, livraison Juillet 2018
P. 3
OSIS Cloud - présentation Wolphin
OSIS CloudJuin 2018
5. LIPN
Notre approche (exemple)
• Réservation dynamique de ressources selon des classes SLA :
Premium pour les CPUs (entre 2 et 4 cœurs) ; Advanced pour la
RAM (entre 4 et 8GB RAM)
Motivation
• Augmenter la combinatoire pour des placements plus fins ⇒
meilleures performances
• On masque à l’utilisateur une complexité (il spécifie des classes)
Principe
• Sélection de la requête (encapsulée dans un conteneur);
• Sélection des nœuds candidats;
• Calcul automatique du nombre de ressources;
• Affectation du conteneur sur une machine.
2 / 3
6. Résultats
Collaboration
• Xuanhua Shi - Huazhong University of Science and Technology
(Chine)
Implémentations
• Système d’allocation et d’ordonnancement de conteneurs (C++)
• Nouvelles stratégies multi-critères dans SwamrKit (Go)
Publications
• 2 articles publiés dans des conférences internationales (SC2 et PDP)
• 1 article en cours de soumission dans une revue internationale
(JPDC)
• 3 articles en cours de soumission dans 2 conférences internationales
(DATCOM et SBAC) et 1 workshop international (Europar-CBDP)
3 / 3
7. Offrir la consolidation et l’isolation de performance
Memory Consolidation: Minimiser la mémoire inutilisée
Memory Isolation: Garantir l’accès à la mémoire
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 1 / 7
8. Offrir la consolidation et l’isolation de performance
Memory Consolidation: Minimiser la mémoire inutilisée
Memory Isolation: Garantir l’accès à la mémoire
Native
Host
Mem A Mem B Mem C
Consolidation: un seul espace mémoire
Isolation: même espace mémoire
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 1 / 7
9. Offrir la consolidation et l’isolation de performance
Memory Consolidation: Minimiser la mémoire inutilisée
Memory Isolation: Garantir l’accès à la mémoire
Native
Host
Mem A Mem B Mem C
Consolidation: un seul espace mémoire
Isolation: même espace mémoire
With Virtual Machines
Host
Mem A Mem B Mem C
VM A VM B VM C
Consolidation: difficilement transferable
Isolation: espace mémoire dédié
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 1 / 7
10. Offrir la consolidation et l’isolation de performance
Memory Consolidation: Minimiser la mémoire inutilisée
Memory Isolation: Garantir l’accès à la mémoire
Native
Host
Mem A Mem B Mem C
Consolidation: un seul espace mémoire
Isolation: même espace mémoire
With Virtual Machines
Host
Mem A Mem B Mem C
VM A VM B VM C
Consolidation: difficilement transferable
Isolation: espace mémoire dédié
With Containers
Host
Mem A Mem B Mem C
Consolidation: facilement transferable
Isolation: espace mémoire dédié
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 1 / 7
11. L’automatisation du dimensionnement des conteneurs
Un problème ouvert :
LSFMMS 2016 (Linux Storage, Filesystem and Memory Management Summit)
Vladimir Davydov "Memory control group fairness"
FOSDEM 2017
Chris Down (Facebook) "cgroupv2: Linux’s new unified control"
blog linkedin engineering 2016
Zhenyun Zhuang "Don’t Let Linux Control Groups Run Uncontrolled"
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 2 / 7
12. L’automatisation du dimensionnement des conteneurs
Un problème ouvert :
LSFMMS 2016 (Linux Storage, Filesystem and Memory Management Summit)
Vladimir Davydov "Memory control group fairness"
FOSDEM 2017
Chris Down (Facebook) "cgroupv2: Linux’s new unified control"
blog linkedin engineering 2016
Zhenyun Zhuang "Don’t Let Linux Control Groups Run Uncontrolled"
Des besoins différents mais un même constat :
1 besoin d’une métrique pour optimiser le dimensionnement
2 un candidat semble s’imposer, la refault distance
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 2 / 7
13. L’automatisation du dimensionnement des conteneurs
Un problème ouvert :
LSFMMS 2016 (Linux Storage, Filesystem and Memory Management Summit)
Vladimir Davydov "Memory control group fairness"
FOSDEM 2017
Chris Down (Facebook) "cgroupv2: Linux’s new unified control"
blog linkedin engineering 2016
Zhenyun Zhuang "Don’t Let Linux Control Groups Run Uncontrolled"
Des besoins différents mais un même constat :
1 besoin d’une métrique pour optimiser le dimensionnement
2 un candidat semble s’imposer, la refault distance
Cette métrique est-elle suffisamment précise ?
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 2 / 7
14. Évaluation de la précision de la refault_distance
1 Go
20 min10 sec2 Go
0 500 1000 1500 2000
Position in shadow (in MB)
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
Absoluteerror(GB)
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 3 / 7
15. Évaluation de la précision de la refault_distance
1 Go
20 min10 min2 Go
0 500 1000 1500 2000
Position in shadow (in MB)
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
Absoluteerror(GB)
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 3 / 7
16. Évaluation de la précision de la refault_distance
1 Go
20 min30 min2 Go
0 500 1000 1500 2000
Position in shadow (in MB)
0.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
Absoluteerror(GB)
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 3 / 7
17. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
18. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
19. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P7 P5 P2P3P4P6
Groupe 0
1
P1
Nb_evictions : 1
Nb_pages : 1
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
20. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P8 P5 P3P4P6P7
Groupe 0
2
P2
1
P1
Nb_evictions : 2
Nb_pages : 2
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
21. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
22. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
23. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
Px P5P6P7P8P9
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
24. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
Px P5P6P7P8P9
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
Nb_evictions : 0
Nb_pages : 0
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
25. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
Px P6P7P8P9Px
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
1
P5
Nb_evictions : 1
Nb_pages : 1
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
26. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
P7Px Px Px P8P9
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
2
P6
1
P5
Nb_evictions : 2
Nb_pages : 2
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
27. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
P8P9Px Px Px Px
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
3
P7
2
P6
1
P5
Nb_evictions : 3
Nb_pages : 3
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
28. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
Px P9Px Px Px Px
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
4
P8
3
P7
2
P6
1
P5
Nb_evictions : 4
Nb_pages : 4
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
29. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
Px P9Px Px Px Px
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
4
P8
3
P7
2
P6
1
P5
Nb_evictions : 4
Nb_pages : 4
Groupe 2
Nb_evictions : 0
Nb_pages : 0
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
30. Une approche de refault par groupes
P1P5 P2P3P4P6
Groupe 0
Nb_evictions : 0
Nb_pages : 0
P9 P5 P4P6P7P8
Groupe 0
3
P3
2
P2
1
P1
Nb_evictions : 3
Nb_pages : 3
PxPx Px Px Px Px
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
4
P8
3
P7
2
P6
1
P5
Nb_evictions : 4
Nb_pages : 4
Groupe 2
1
P9
Nb_evictions : 1
Nb_pages : 1
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 4 / 7
33. Une approche de refault par groupes
new_refault_distance = 2 + 3 + ( 4 - 2 )
P6Px P6P8P6P9P6Px P6Px P6Px P6PxP6P7
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
4
P8
2
P6
1
P5
Nb_evictions : 4
Nb_pages : 3
Groupe 2
Nb_evictions : 2
Nb_pages : 2
P6Px
1
P9
Complexité : on obtient directement la métrique
refault_distance = nb_pages−page_age
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 5 / 7
34. Une approche de refault par groupes
new_refault_distance = 2 + 3 + ( 4 - 2 )
P6Px P6P8P6P9P6Px P6Px P6Px P6PxP6P7
Groupe 0
4
P4
3
P3
2
P2
1
P1
Nb_evictions : 4
Nb_pages : 4
Groupe 1
4
P8
2
P6
1
P5
Nb_evictions : 4
Nb_pages : 3
Groupe 2
Nb_evictions : 2
Nb_pages : 2
P6Px
1
P9
Complexité : on obtient directement la métrique
refault_distance = nb_pages−page_age
Empreinte mémoire : limitée et configurable (2 entiers par groupes)
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 5 / 7
35. Évaluation de la précision de notre approche par groupe
1 Go
20 min10 sec2 Go
0 500 1000 1500 20000
2
4
6
8
10
12
Absoluteerror(MB)
Maximum error
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 6 / 7
36. Évaluation de la précision de notre approche par groupe
1 Go
20 min10 min2 Go
0 500 1000 1500 20000
2
4
6
8
10
12
Absoluteerror(MB)
Maximum error
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 6 / 7
37. Évaluation de la précision de notre approche par groupe
1 Go
20 min30 min2 Go
0 500 1000 1500 20000
2
4
6
8
10
12
Absoluteerror(MB)
Maximum error
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 6 / 7
38. Estimation d’un working-set depuis la métrique
La métrique donne une approximation de la position d’une page.
On peut en inférer une estimation du working-set :
à chaque miss on regarde la position de la page
on maintient des statistiques sur des fenêtres temporelles
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 7 / 7
39. Estimation d’un working-set depuis la métrique
La métrique donne une approximation de la position d’une page.
On peut en inférer une estimation du working-set :
à chaque miss on regarde la position de la page
on maintient des statistiques sur des fenêtres temporelles
# cat /sys/muse
1024 5% 10% 5%
512 0% 0% 5%
1536 22% 15% 8%
2048 38% 27% 16%
2560 38% 27% 16%
4096 56% 50% 45%
... ..% ..% ..%
1min 5min 15min
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 7 / 7
40. Estimation d’un working-set depuis la métrique
La métrique donne une approximation de la position d’une page.
On peut en inférer une estimation du working-set :
à chaque miss on regarde la position de la page
on maintient des statistiques sur des fenêtres temporelles
# cat /sys/muse
1024 5% 10% 5%
512 0% 0% 5%
1536 22% 15% 8%
2048 38% 27% 16%
2560 38% 27% 16%
4096 56% 50% 45%
... ..% ..% ..%
1min 5min 15min1min 5min 15min
2048 38% 27% 16%
Sur les 5 dernières minutes, avec 2 Go en plus, on aurait eu 27% hits
M. Bittan / J. Sopena MUsE - Memory Usage Evaluation 7 / 7
48. Présentation de Gandi
Gandi.net
Domain : Fournisseur de nom de domaine depuis Mars 2000
Simple Hostng: Plus de 100K applicaton et sites déployés
Cloud: Fournisseur de cloud depuis 2008
Security: Geston de certfcats SSL
Créaton : 1999
Effectfs : 84 salaries
Points de présences: 3 contnents (Europe, us, Asie)
49. Métrologie réseau
Définition métrologie:
La métrologie regroupe l'ensemble des techniques permettant d'effectuer des
mesures, de les interpréter et de garantir leur exactitude
Définition métrologie réseau:
Assurer la collecte est la bonne exploitation des métriques réseaux pour
assurer une facturation équitable
Métrologie réseau au niveau de Wolphin:
• Collecte générique des métriques réseau au travers d’une couche
d’abstraction
• Collecte générique Docker/LXC/…
• Collecte au niveau des containers et au niveau des hosts
50. Mécanique de Collecte
1/2
Deux processus de collecte:
• Collecte online :
• Extraction periodique de la consommation en bande passante et en
paquets par seconde a partir des statistique netdev du kernel
• Mapping entre les interfaces des containers et leur pair au niveau des
kernel
• Collecte offline:
• Patch du kernel pour retourner les statistique des netdev a la destruction
• Mapping entre les interfaces des containers et leur pair au niveau des
kernel
51. Mécanique de Collecte
2/2
• Architecture de collecte:
• Daemon en python pour la collecte online
• Règle UDEV et script python pour la collecte offline
• Kairos DB pour le stockage des métriques
• Stockage actuel se basant sur une api en envoyant des données en
JSON
→ Modifier la collecte pour utiliser le model de données Cloudkitty
53. Alter Way
Storage solutions: Prometheus
TS DBMS and monitoring system
+ performance, efficient space (as low as 1.3bytes/sample)
+/- pull model
- no string type metrics, by design
strings only for metadata (labels)
- low performance with high cardinality labels
(i.e. container_id - each value is a new time series)
better with new storage layer in 2.0
- no event logging
- no bulk API
OSIS Cloud - présentation Wolphin
Jun. 2018 OSIS CloudP. 2
54. Alter Way
Storage solutions: InfluxDB
Hybrid DBMS for time series and events
+ string type metrics
+ event logging
- commercial clustering
- still not a general storage
OSIS Cloud - présentation Wolphin
Jun. 2018 OSIS CloudP. 3
55. Alter Way
Storage solutions: Elasticsearch
Search engine / document store
+ perfect for event logging
+ maturity, tooling, kibana, etc.
- performance, space
- especially bad for time series
OSIS Cloud - présentation Wolphin
Jun. 2018 OSIS CloudP. 4
56. Alter Way
Storage solutions: Timescale
Postgres extension: partitioned hypertables
- performance
but wrt Postgres: ~20x insert, 2kx delete, up to 14kx queries
- grafana dashboards
+ no need for ETL
can manage all types of data we need
+ free clustering
++ flexibility, maturity
OSIS Cloud - présentation Wolphin
Jun. 2018 OSIS CloudP. 5
57. Alter Way
⇒ https://gitlab.com/wolphin
Merci
- Julien Sopena, LIP6
- Christophe Cérin, LIPN
- Christophe Sauthier, Objectif Libre
- Ahmed Amamou, Gandi
- Marco Mariani, Alter Way
Juin 2018 OSIS CloudP. 4
Aller plus loin avec Wolphin
OSIS Cloud - présentation Wolphin