Révision 5a976f8f papers/2013/Climate-Paper/paper.tex

b/papers/2013/Climate-Paper/paper.tex
6 6
\documentclass[conference]{IEEEtran}
7 7
\usepackage[utf8]{inputenc}
8 8
\usepackage[T1]{fontenc}
9
\usepackage{graphicx}
10
\usepackage{epstopdf} 
11

  
12
\ifCLASSOPTIONcompsoc
13
  \usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
14
\else
15
  \usepackage[caption=false,font=footnotesize]{subfig}
16
\fi
9 17

  
10 18
\begin{document}
11
\title{Climate: Resource reservation\\service for OpenStack}
19
\title{Improving HPC support in OpenStack\\by introducing a resource reservation service}
12 20

  
13 21
\author{
14 22
  \IEEEauthorblockN{François Rossigneux}
......
26 34

  
27 35
\maketitle
28 36

  
29
% Intro
30
%   Avenement du cloud, mais certains aspects restent en rade => besoin de la réservation.
31
% - Des scénarios nouveaux
32
% - Émergence de nouveaux modèles de facturation
33
% - Expression des besoins (hardware, network, mais aussi latence, etc opérateurs, homogeneous)
34
% - Dévoiler ou pas ? Optimiser le scheduling ? Sugérer ?
35
% - Qu'est-ce qu'une réservation ? À quoi est-ce limité ? Comment identifier les resources ? Soft ou hard allocation ?
36
% - Une extension de l'architecture d'OpenStack
37
% - De nouvelles possibilités en terme d'énergie (billing, mais aussi sleeping)
38
%  Conclu
39

  
40

  
41
% Nouveaux éléments
42
% - Réservation latence réseau
43
% - Sous-providers
44
% - Plateforme ouverte vs fermée
45
% - Dévoiler plus ou moins de choses
46
% - Réserver des autres resources
47
% - Réserver au début ou à la fin
48
% - Migration VMs
49
% - Annulation dégressive, modèles de facturation.
50
% - Acquisition des métriques (dyn, sta ?)
51
% => INNOVATION dans OpenStack
52

  
53
% Faut-il parler du projet XLcloud ?
54
% TODO: réorganiser un peu l'enchainement des idées, mais l'essentiel est là.
55 37
\begin{abstract}
38
% TODO RE-READ
56 39
Cet article présente la contribution apportée au projet OpenStack, dans le cadre de la réalisation du projet XLcloud.
57 40
Il est apparu nécessaire de pouvoir réserver des resources dans le temps, afin d'optimiser la conso énergétique et garantir de bonnes performances dans un contexte HPC. Comme OpenStack ne disposait pas d'un tel mécanisme, nous avons développé un framework de réservation, appelé Climate, qui s'interface avec Nova, l'ordonnanceur d'OpenStack. Climate gère les réservations et l'affectation des hôtes réservés, en tenant compte de leurs performances énergétiques, et fournit un ID de réservation. Cet identifiant de réservation est passé à Nova sous forme de hint, afin qu'il puisse récupèrer auprès de Climate les hôtes réservés. Aucune fonctionnalité n'est enlevé de Nova: il est toujours possible de lancer des instances non réservées, simplement en ne fournissant pas d'id de réservation.
58 41
Les propriétés énergétiques des hôtes sont calculées à partir des relevés effectués par les wattmètres, et remontés grâce à Kwapi, pondérés ensuite par la performance en calcul des hôtes.
59 42
En fonction du calendrier de réservation et des performances énergétiques des hôtes, il est possible de prendre des décisions d'extinction des machines inutilisées.
60 43
La réservation d'hôtes physiques induit parfois de devoir déplacer des machines virtuelles (aggrégation), afin de libérer des hôtes.
61
% dont le résultat est injecté dans Nova sous forme de hint. Climate est ensuite requêté par Nova grâce aux extensions filters, qui permettent le lancement de filtres personnalisés. Le choix des machines réservées se fait en tenant compte aussi de leurs performances énergétiques. C'est pourquoi Climate et Nova s'interfacent avec Kwranking, le module d'efficience énergétique qui exploite les métriques remontées par Kwapi (le module de télémétrie) et calcule un indice de performance énergétique en flops/w. Climate, comme il dispose d'un calendrier des réservations, permet de mettre en veille les machines durant les périodes d'inactivité.
62 44
\end{abstract}
63 45

  
64 46
\section{Introduction}
65
% NEW
66
Avec l'avènement du cloud et la mutualisation des équipements, les utilisateurs sont amenés à partager la même infrastructure. Cette consolidation apporte bien des avantages, en terme d'efficacité énergétique notamment, puisque le taux d'utilisation des machines est plus élevé, et de souplesse d'utilisation, les entreprises n'ayant plus besoin d'héberger elles mêmes leurs infrastructures informatiques, qui étaient par ailleurs souvent surdimensionnées.
67
Ce nouveau modèle convient à la plupart des usages, mais certains domaines, telle que le HPC, sont difficilement transposables dans le cloud sans nécessiter quelques adaptations.
68
Étant donné que les jobs HPC sont très intensifs, il est nécessaire d'optimiser l'infrastructure pour rendre possible leur exécution dans un délai raisonnable. La communication entre les machines doit avoir une faible latence, et les noeuds de calcul doivent être suffisament homogènes pour éviter que le plus lent ralentisse les autres.
69
Il faut aussi veiller à ce que l'activité des autres utilisateurs ne perturbe pas les jobs HPC.
70
Pour faire face à ces contraintes, et conjuguer les avantages du cloud avec les performances offertes par une infrastructure privée, il est nécessaire de pouvoir réserver des ressources. Ces ressources, dans un contexte HPC, seront intensivement utilisées. Ne se posent donc pas les inconvénients d'une mauvaise consolidation (mauvaise efficacité énergétique, gaspillage de ressources).
47
Avec l'avènement du cloud et la mutualisation des équipements, les utilisateurs sont amenés à partager la même infrastructure. Cette consolidation apporte des avantages certains en terme d'efficacité énergétique et de souplesse d'utilisation.
48
Cependant, si ce nouveau modèle convient à la plupart des usages, certains usages, tels que le HPC, sont difficilement transposables dans le cloud à l'heure actuelle.
49
En effet, les applications HPC sont très gourmandes en resources, et sont très sensibles à toute variation de performances entre les noeuds de calcul.
50
Il faut donc avoir une homonénéité des noeuds en terme de CPU / GPU, mais aussi de réseau (bande passante, latence). Cette homogénéité évite que les noeuds les plus lents ralentissent les plus rapides.
51
Il faut aussi veiller à ce que l'activité des autres utilisateurs ne perturbe pas les jobs HPC. Pour cela, un utilisateur doit pouvoir réserver des machines, et la portion de réseau utilisée entre elles, afin d'éliminer tout bruit parasite. 
52
Cette réservation de machine, nécessaire dans un contexte HPC, semble aller à l'encontre de la tendance actuelle à la consolidation. Mais c'est sans compter la spécificité des tâches HPC, qui sont très intensives et accaparent souvent toutes les ressources de calcul des machines. Si la consolidation était possible, elle apporterait non pas des avantages (meilleur taux d'usage et meilleur efficacité énergétique), mais au contraire perturberait la performance des applications HPC, au point de rendre leur exécution dans le cloud impossible.
53
Or, actuellement, les applications HPC sont exécutés sur des infrastructures privées, souvent surdimensionnées, très onéreuses, et rarement exploitées de façon continue à leur plein potentiel.
71 54

  
72
OpenStack, solution open source de cloud qui connait une forte croissance actuellement, ne dispose pas d'un service de réservation. Les instances de VMs sont instanciées immédiatement.
73
D'une part, ce modèle se prête mal au HPC, et d'autre part, cela empêche le gestionnaire de datacenter (DCIM) de pouvoir prévoir l'utilisation future des resources, et par conséquent de pouvoir lisser la charge du datacenter en proposant un modèle de facturation attractif qui incite les utilisateurs à réserver durant les périodes moins chargées, ou sur du matériel plus efficient.
55
OpenStack, solution de cloud open source, connait une forte croissance. Nous proposons donc de lui adjoindre un service de réservation, pour supporter les applications HPC, d'une part, et bénéficier de tous les avantages procurés par un système de réservation, d'autre part.
74 56

  
75
% TODO MAJ en fonction de la suite...
76
Dans ce papier, nous proposons donc un service de réservation pour OpenStack, qui permette de supporter les scénarios de type HPC. Dans une première partie, nous verrons quels scénarios seraient rendus possibles par un tel service. Ensuite, nous verrons en détail comment l'utilisateur pourra exprimer ses besoins, quel sera le fonctionnement du scheduler, et comment le placement des réservations pourra être optimisé.
57
% TODO nommer les parties (numéros)
58
Dans cet article, nous verrons dans un premier temps comment pourrait fonctionner un tel service de réservation (spécification des besoins, algorithmes de placements, optimisation de certains critères). Nous passerons en revue les avantages procurés à l'utilisateur et au DCIM, et nous parlerons des modèles de facturation possibles. Dans un second temps, nous décrirons une proposition d'architecture logicielle, qui viendra se greffer sur OpenStack Nova (scheduler). Nous montrerons aussi comment tirer parti de la présence de wattmètres sur les machines, pour choisir les machines les plus efficientes.
77 59

  
78
% OLD
79
% Avec l'avènement du cloud, beaucoup d'environnements mono-tenancy sont passés en multi-tenancy. Cependant, au-dela des avantages indéniables que présente la mutualisation des équipements, se posent de réels challenges pour migrer des environnements de type HPC dans le cloud. En effet, dans un environnement multi-tenancy, il n'y a aucune garantie que la performance soit lisse dans le temps (charge parasite et trafic réseau parasite), et souvant, le modèle de réservation de ces environnements ne garantie pas la réservation de noeuds avec des performances homogènes (les machines les plus rapides peuvent être potentiellement freinées par les plus lentes). Le critère d'homogénéité d'un groupe de machine sera la vitesse CPU/GPU, et la carte réseau. En effet, si un hôte a plus de mémoire que nécessaire, cela n'a pas d'impact sur les performances.
60
\section{Système de réservation}
61
Pour créer des réservations, l'utilisateur doit pouvoir exprimer ses besoins. Ensuite, un algorithme d'ordonnancement trouve les différentes possibilités en fonction de ces besoins et d'autres critères.
80 62

  
81
% Aujourd'hui, deux modèles se cotoient: les environnements multi-tenancy, sans réservation à l'avance (type OpenStack), et mono-tenancy, avec une réservation à l'avance (type Grid'5000, plateforme d'expérimentation scientifique).
82
% Le projet XLcloud vise à faire converger ces deux mondes, et comme il repose sur OpenStack, nous avons vu le besoin d'y ajouter un service de réservation de ressources. Il permettra la réservation des resources dans le temps, en essayant de minimiser la consommation d'énergie. Il permettra à Nova retrouver les hôtes réservées. La base de réservation pourra être exploitée pour la facturation (on est capable de dire quel utilisateur possédait telle machine à un instant donné), et permettra d'optimiser la consommation d'énergie en éteignant les machines qui ne sont pas susceptibles d'être utilisées prochainement.
63
\subsection{Expression des besoins}
64
% TODO limitation : estimation de la durée, en fonction des hôtes choisis.
65
% TODO limitation : extension de la durée de réservation et collision avec d'autres réservations... Ou alors accepter l'extension uniquement si ça ne colisionne pas.
83 66

  
84
% % Need to be updated
85
% Dans une première partie, nous décrirons l'architecture globale, avec d'une part les modules de réservation et de scheduling (Climate et Nova), et d'autre part la remontée des métriques énergétiques et leur exploitation. Ensuite, nous montrerons comment ces modules s'interconnectent, afin d'améliorer l'efficacité énergétique, grâce à une réservation plus judicieuse des resources, et un meilleur contrôles des hôtes en marche et en veille. Enfin, nous parlerons des performances et limitations du modèle actuel.
67
L'utilisateur peut vouloir démarrer sa réservation immédiatement, car il possède déjà les données qu'il veut traiter. Il peut aussi anticiper une tâche, et réserver à l'avance pour être sûr d'avoir bien les ressources au moment voulu. Mais s'il est facile de donner une date de début, estimer la durée de sa tâche l'est beaucoup moins. Comme il est très difficile de calculer précisément la durée d'une tâche, le système de réservation devrait permettre de palier à cet inconvénient en permettant à l'utilisateur d'agrandir après coup sa période de réservation, s'il s'apperçoit que sa tâche n'est pas fini lorsque sa réservation va arriver à échéance.
86 68

  
87
\section{Scénarios envisagés}
88
\subsection{Provider spécialisé HPC}
89
Nous pouvoir voir le cloud comme un ensemble de resources, appartenant à un, ou plusieurs propriétaires s'il s'agit de plusieurs clouds mutualisés grâce à un broker.
90
Parmi cet ensemble de resources, il existe des sous-ensembles qui sont suffisament homogènes sur certains critères pour pouvoir intéresser des clients avec des besoins spécifiques. Ces clients peuvent être des particuliers, mais aussi des entreprises spécialisées dans la vente de ressources de cloud. Par exemple, une entreprise spécialisée dans la fourniture d'infrastructure HPC pourrait réserver tous les noeuds qui se prêtent à cette activité.
69
% TODO donner un exemple d'expression
70
L'utilisateur a parfois une idée très précise des caractéristiques matérielles des hôtes qu'il souhaite réserver, et d'autres fois beaucoup moins.
71
Pour établir la liste des caractéristiques souhaitées, il doit pouvoir choisir parmi un catalogue de propriétés (modèle de CPU, taille du cache mais aussi capacité réseau, etc). Ensuite, on peut s'inspirer de la grammaire supportée par le Json\_filter de Nova. Avec ce filtre, il est possible d'exprimer ses besoins avec plus ou moins de granularité, et il dispose d'opérateurs logiques. Cependant, dans un contexte HCP, les applications sont sensibles aux disparité de performances entre les noeuds, et il sera nécessaire d'adapter ce Json\_filter. En effet, celui-ci retourne actuellement un unique sous-ensemble à partir d'un ensemble d'hôtes. Or, il serait intéressant de pouvoir obtenir plusieurs sous-ensembles à partir d'un ensemble d'hôtes, chaque sous-ensemble étant homogène sur les propriétés spécifiées. Pour réaliser cette adaptation, nous proposons d'introduire le mot clé "homogeneous".
72
Ce mot clé pourra être utilisé, par exemple, si le modèle de CPU spécifique n'importe pas, mais que seul le fait que tous les noeuds aient le même CPU est important. L'homogénéité porte en effet surtout sur le CPU, le GPU, et le réseau. En effet, concernant l'espace de stockage, il suffit qu'il soit suffisant. Si un hôte en possède plus, il n'ira généralement pas plus vite.
73
Ce mot clé donnera au scheduler plus de liberté dans le choix des hôtes. Cependant, il rajoute encore de la difficulté à estimer la durée totale de sa tâche, car les sous-groupes d'hôtes homogènes en performances sélectionnés peuvent être hétérogènes en performances entre eux.
91 74

  
92
% Climate peut servir à des entreprises, qui louent une partie des ressources ayant certaines propriétés et les louent ensuite à leurs clients.
93
% Par exemple, un provider spécialisé dans le HPC pourrait louer des noeuds avec des propriétés bien définies en termes de latence maximale entre les noeuds.
94
% Il créerait une réservation pour une période d'un an, et les utilisateurs chargeraient automatiquement leurs instances dans cette grosse réservation.
75
Pour optimiser le placement des réservations, nous demandons à l'utilisateur de préciser des bornes temporelles entre lesquelles placer sa réservation. Il donne donc les paramètres suivants : date du début au plus tôt, date de fin au plus tard, durée de la réservation (à placer entre les deux bornes extrêmes), et les propriétés des hôtes. Pour une réservation immédiate, il suffit fixer les bornes de début et de fin de façon adéquate.
95 76

  
96
% TODO parler des problèmes ?
97
% Ce schénario se rapproche d'une réservation permanente. En effet, il est probable que le provider HPC veuille poursuivre sa réservation arrivé à l'échéance. Sauf qu'il peut y avoir une autre réservation de placée. Climate pourrait supporter ce type de réservation, si on omettait la date de fin et la duration. Ce type de réservation devra être manuellement annulé.
77
L'utilisateur fournit le nombre d'hôtes nécessaire. Cependant, on pourrait imaginer que le nombre d'hôtes nécessaires puisse varier au cours d'une réservation. L'idéal serait que l'utilisateur puisse faire une réservation en précisant, par tranche horaire, le nombre de noeuds qu'il souhaite voir allumé. Cependant, cela est très difficilement faisable en pratique, car il est difficile de déterminer à l'avance le temps que va prendre chaque étape dans le calcul. Une alternative serait de donner à l'utilisateur la possibilité, au cours d'une réservation, d'aggréger d'autres hôtes à sa réservation, selon ses besoins.
98 78

  
99
\subsection{Optimisation de la charge}
100
Grâce à un service de réservation le DCIM peut faire des prévisions d'usage du cloud, et ainsi proposer des tarifs plus avantageux durant les heures creuses.
101
Au contraire, durant les pics de charge, le tarif pourra être plus élevé. Cela permet de tenir compte du coût de l'énergie qui peut être variable, afin d'en répercuter le coût sur les utilisateurs. De plus, lisser la charge et éviter les pics peut permettre un meilleur taux d'usage global du datacenter, et faciliter son implantation dans des zones où la puissance max qu'il est possible de tirer est plafonnée.
79
Enfin, l'utilisateur peut préciser sur quelle critère il veut optimiser le placement de sa réservation. Par exemple, démarrer le plus tôt possible, ou utiliser les machines qui consomment le moins d'énergie, ou choisir le créneau horaire où le coût du courant électrique est le plus bas. Il doit pouvoir consulter ces critères dans un catalogue. Cependant, ces critères peuvent entrer en conflit avec l'optimisation effectuée par le DCIM, donc il ne sont pas forcément autorisés.
102 80

  
103
% TODO dévoiler charge ?
104
Cependant, proposer des tarifs variable en fonction du temps dévoile quelle est l'activité du datacenter. Selon le degré de transparence du fournisseur, celui pourra choisir de proposer une variation de tarif à plus ou moins fine granularité, afin de préserver un certain niveau de confidentialité. Par exemple, des tarifs variants heure par heure dévoilent beaucoup de choses sur l'activité du datacenter, tandis que s'ils varient par chaque mois, cela masque de l'information. Cependant, même avec une variable à grosse granularité, il sera possible de dégager des courbes de tendances, qui peuvent être porteuse de beaucoup d'informations. De plus, une grosse granularité aura tendance à favoriser les clients plus aggressifs et pénaliser ceux dont les réservations sont placées au endroits les meilleurs. Faut-il mieux risquer de perdre certains clients aggressifs, ou perdre des clients souples ?
81
Pour récapituler, la figure \ref{reservation_parameters_table} présente les paramètres passés par l'utilisateur au système pour créer une réservation.
82

  
83
\begin{table}
84
\renewcommand{\arraystretch}{1.3}
85
\caption{Arguments used for creating a reservation}
86
\label{reservation_parameters_table}
87
\centering
88
\begin{tabular}{|l|l|}
89
\hline
90
\bfseries Argument & \bfseries Description\\
91
\hline
92
start\_time & Not sooner than timestamp \\
93
end\_time & Not later than timestamp \\
94
duration & Reservation duration \\
95
quantity & Hosts quantity \\
96
host\_properties & Hosts selection criteria \\
97
scheduler & Scheduler algorithm \\
98
\hline
99
\end{tabular}
100
\end{table}
101

  
102
\subsection{Modèles de réservation}
103
Il y a deux manières d'enregistrer une réservation : soit c'est au moment de la réservation qu'est choisi un sous-ensemble parmi les hôtes candidats, soit on ne choisit pas les resources au moment de la réservation, mais on garantie seulement que lorsque la réservation deviendra active, on aura suffisament de ressources disponibles. Dans ce dernier cas, il faut considérer chaque réservation comme une règle, et chaque demande d'instanciation ou de réservation, par la suite, comme d'autres règles qui ne peuvent être acceptées que si elles sont compatibles avec toutes les règles précédentes inscrites dans le système.
104

  
105
Le première stratégie permet une meilleure anticipation du coût énergétique pour deux raisons. La première est qu'on connait précisément l'hôte sur lequel la réservation va être lancée, et on peut estimer le coût. La seconde est que si les hôtes les plus efficients sont sélectionnés en priorité, les premiers arrivés ont les hôtes les plus efficients. Donc les instances non réservées, et réservation créées et activées avant la notre ne seront pas placées sur les hôtes les plus efficients, puisqu'il nous sont déjà réservées. Avec cette stratégie, le premier qui réserve a les hôtes les plus efficients.
106
En revanche, elle est moins robuste si un hôte tombe en panne entre le moment de la réservation et le moment où celle-ci devient active.
107

  
108
La deuxième stratégie est plus robuste à ce niveau là : en cas de panne d'un hôte entre la demande de réservation et le moment où la réservation devient active, il est peu probable que cela impacte la réservation, car il restera probablement des hôtes candidats au moment de la réservation. Cette stratégie, par opposition à la première, favorise les premiers clients qui lancent des instances, concernant l'efficacité énergétique des hôtes.
109

  
110
Il convient aussi de gérer correctement le cas où des instances non-réservées sont instanciées sur un hôte qui a une réservation prévue dans le futur. On peut permettre à de telles instances d'être créées, mais donner la priorité aux réservations : si une réservation doit commencer, les instances non réservées sont soit tuées brutalement, soit mises en pause (moyennant un petit délai), soit migrées sur d'autres hôtes disponibles.
111

  
112
\subsection{Algorithme de réservation}
113
Le rôle d'un tel algorithme est de trouver quels sont les emplacements libres pour placer une réservation.
114
Il prend en entrée les paramètres présentés dans la figure \ref{reservation_parameters_table} et retourne en sortie des propositions de placement de réservation.
105 115

  
106
\subsection{Facturation à l'usage}
116
L'algorithme le plus basique se contente de trouver la première période libre, pendant la durée requise. Pour cela, il trie la liste des hôtes candidats par date de disponibilité au plus tôt. Ensuite, il prend le premier hôte de cette liste, et essai d'aggréger autant d'hôtes que nécessaire sur cette période de temps. S'il n'y en a pas assez, il trouve le second hôte disponible au plus tôt, et recommence le processus.
117

  
118
Des algorithmes bien plus évolués peuvent être mis en place, pour optimiser les réservations en fonction du le coût du courant, ou pour lisser la charge, ou encore limiter les cycles d'extinction/rallumage des machines.
119

  
120
Lorsque plusieurs choix sont possibles, le scheduler à deux possibilités : soit il n'en retourne qu'un, ne donnant aucun choix à l'utilisateur, soit il retourne la liste des propositions et l'utilisateur choisit celle qu'il veut. La première approche nécessite que l'utilisateur décrive en amont les critères de son choix (afin que le scheduler sache laquelle choisir). La deuxième solution peut présenter plus d'intérêt pour le DCIM, qui choisit, selon ses propres critères, le meilleur choix de son point de vue.
121
De plus, faire choisir l'utilisateur entre plusieurs possibilités revient dévoiler un peu l'usage du datacenter.
122

  
123
Parfois, il serait intéressant de suggérer à l'utilisateur de modifier ses paramètres un petit peu, soit parce qu'aucune réservation n'est possible avec ses critères, soit parcequ'il apparait nettement plus avantageux de modifier ces critères (par exemple une durée un peu moins longue permettrait d'obtenir des machines beaucoup plus efficiente, ce qui peut arranger à la fois l'utilisateur et son fournisseur).
124

  
125
Cependant, ce mécanisme est le moins utilisé sur les plateformes où il serait le plus utile : sur les praformes fermées, où l'usage interne des resources n'est pas transparent, l'utilisateur fait ses requêtes un peu en aveugle. Rien ne lui indique qu'en modifiant un peu sa requête, il obtiendrait satisfaction. Mais si ces plateformes sont fermées, c'est pour une bonne raison, et faire des suggestions serait dévoiler l'état du datacenter.
126
Cependant, un utilisateur qui voudrait le deviner pourrait faire un grand nombre de requêtes, avec des critères trop sélectifs, et en restreignant petit à petit ses critères, trouver les limites du datacenter.
127
Il faut donc se prémunir de ce type d'attaque. Une tentative de réservation qui échoue ne peut pas être facturée, donc on ne peut pas jouer sur ce levier. En revanche, on peut fixer des limites aux valeurs extrêmes des paramètres, et limiter le nombre de requêtes par seconde.
128

  
129
\subsection{Annulation de réservation}
130
Les réservations peuvent être annulées, avant leur fin, afin de ne pas monopoliser des ressources dont l'utilisateur n'a plus besoin, et avant leur commencement, si l'utilisateur change d'avis.
131
Cependant, une annulation doit entraîner une pénalité pour l'utilisateur, car celui-ci pourrait faire des réservations multiples suivies d'annulations pour tenter de deviner l'infrastructure du datacenter. Et d'autre part, une annulation avant la fin d'une réservation dénote une mauvaise estimation de la durée de la réservation.
132
Cette pénalité se traduit par un remboursement à moins de 100\%, de la durée de réservation qui n'a pas encore été consommée.
133
Avant le début de réservation, plus celle-ci est annulée tôt, plus le pourcentage de remboursement est élevé. Cependant, si elle est annulée immédiatement, la réservation n'est pas remboursée à hauteur de 100\%. Après le début de la réservation, plus l'utilisateur l'annule tard (proche de sa date de fin), plus le pourcentage de remboursement tend vers 100\%.
134

  
135
\subsection{Facturation}
107 136
Grâce au service de réservation, un client est seul sur l'hôte réservé, ce qui permet une facturation à l'usage précise et incontestable.
108
En effet, sur des environnements sans réservation, il est difficile de répartir les coûts entre plusieurs utilisateurs, s'ils se partagent les mêmes machines.
109
Il existe bien des modèles pour estimer la consommation par VM, mais il est difficile de prouver à un utilisateur qu'il a consommé telle quantité d'énergie, et se pose aussi le problème de la répartition du coût statique de l'hôte: en effet, un serveur qui ne fait rien consomme quand même, donc plus il y a d'utilisateurs qui se partagent cette machine, moins ce coût est élevé par utilisateur.
137
En effet, sur des environnements sans réservation, il est difficile de répartir les coûts entre plusieurs utilisateurs, s'ils se partagent les mêmes machines. Il existe bien des modèles pour estimer la consommation par VM, mais il est difficile de prouver à un utilisateur sa consommation, et se pose aussi le problème de la répartition du coût statique de l'hôte: en effet, un serveur qui ne fait rien consomme quand même, donc plus il y a d'utilisateurs qui se partagent cette machine, moins ce coût est élevé par utilisateur. Une facturation à l'usage incite les clients à optimiser leurs programmes, et permet une facturation équitable des clients.
110 138

  
111
Une facturation à l'usage incite les clients à optimiser leurs programmes, et permet une facturation équitable des clients.
139
La facturation prend en compte une part statique et une part dynamique.
112 140

  
113
\section{Modèle de réservation}
114
Nous proposons un modèle de réservation qui permettent à l'utilisateur de préciser des critères sur la réservation : date du début au plus tôt, date de fin au plus tard, durée de la réservation (à placer entre les deux bornes extrêmes), et les propriétés des hôtes qui importent. Cela permet au scheduler de trouver le meilleur moment où réserver les ressources. Pour une réservation immédiate, il suffit fixer les bornes de début et de fin de façon adéquate.
115
Les propriétés que passent l'utilisateur en paramètre serviront à trouver quels hôtes correspondent à ses besoins. Dans un contexte HCP, les applications sont sensibles aux disparité de performances entre les noeuds. C'est pourquoi l'utilisateur aura besoin de noeuds aux performances de calcul homogènes (en terme de CPU ou GPU, et communication réseau). Mais parfois, le modèle de CPU spécifique n'importe pas. Il faut donc introduire un mot clé "homogeneous" que l'utilisateur peut utiliser pour demander à ce que tous ses noeuds soient homogènes sur le critère spécifié.
116
L'homogénéité des machines en terme d'espace mémoire ou de stockage n'a pas d'importance, pourvu que cet espace soit suffisant. Effet, si un hôte a plus de mémoire qu'un autre, il n'ira généralement pas plus vite.
117
Une réservation est une attribution de machines entre deux dates, à un client (project dans OpenStack).
118
Cependant, il convient de gérer correctement le cas où des instances non-réservées sont instanciées sur un hôte qui a une réservation prévue dans le futur. On peut permettre à de telles instances d'être créées, mais donner la priorité aux réservations. Si une réservation doit commencer, les instances non réservées sont soit tuées brutalement, soit mises en pause (moyennant un petit délai), soit migrées sur d'autres hôtes disponbibles. Cette approche permet une facturation des réservations qui est dégressive en fonction de l'anticipation (plus on anticipe, moins c'est cher).
141
\subsubsection{Part statique}
142

  
143
\paragraph{En fonction de la performance des machines}
144
Les machines les plus performances doivent coûter plus cher, car elles sont plus récentes, plus onéreuses, et sont très souvent utilisées par des utilisateurs pressés même si on en augmente le coût. Ainsi, pour un même ratio flop/w, la machine la plus rapide devra coûter plus cher.
145

  
146
\paragraph{En fonction de la charge}
147
Grâce à un service de réservation le DCIM peut faire des prévisions d'usage du cloud, et ainsi proposer des tarifs plus avantageux durant les heures creuses. Au contraire, durant les pics de charge, le tarif pourra être plus élevé. Cela permet de tenir compte du coût de l'énergie qui peut être variable, afin d'en répercuter le coût sur les utilisateurs. De plus, lisser la charge et éviter les pics peut permettre un meilleur taux d'usage global du datacenter, et faciliter son implantation dans des zones où la puissance max qu'il est possible de tirer est plafonnée.
148

  
149
Cependant, proposer des tarifs variable en fonction du temps dévoile quelle est l'activité du datacenter. Selon le degré de transparence du fournisseur, celui pourra choisir de proposer une variation de tarif à plus ou moins fine granularité, afin de préserver un certain niveau de confidentialité. Par exemple, des tarifs variants heure par heure dévoilent beaucoup de choses sur l'activité du datacenter, tandis que s'ils varient par chaque mois, cela masque de l'information. Cependant, même avec une variable à grosse granularité, il sera possible de dégager des courbes de tendances, qui peuvent être porteuse de beaucoup d'informations. De plus, une grosse granularité aura tendance à favoriser les clients plus aggressifs et pénaliser ceux dont les réservations sont placées au endroits les meilleurs. Faut-il mieux risquer de perdre certains clients aggressifs, ou perdre des clients souples ?
150

  
151
\subsubsection{Part dynamique}
152
Il s'agit du coût du courant électrique réellement utilisé (en prenant en compte la consommation idle des machines).
119 153

  
120 154
\section{Architecture}
155
Dans cette section, nous décrivons notre architecture logicielle telle qu'elle sera implémentée dans un premier temps.
156
Nous utiliserons la stratégie de réservation qui consiste à choisir les hôtes au moment de la réservation.
157

  
158
\begin{figure*}[!t]
159
\centerline {\includegraphics[width=14cm]{figures/architecture.eps}}
160
\caption{Global architecture}
161
\label{fig_architecture}
162
\end{figure*}
121 163

  
122 164
\subsection{Climate}
123 165
Notre architecture vise à apporter des fonctionnaliés supplémentaires d'ordonnancement, sans pour autant être intrusif au niveau Nova.
124 166
Nova se compose d'une interface API, et d'un ensemble de filtres et pondérateurs.
125 167
Voici quel est le workflow actuellement utilisé dans OpenStack: lorsqu'un utilisateur souhaite instancier une VM, il passe en paramètres un certains nombre de critères (flavor, etc), et l'ordonnanceur Nova commence par filtrer les hôtes pour garder ceux qui correpondant aux besoins de l'utilisateur. Ensuite, Nova pondère les hôtes restants grâce à des pondérateurs. Il existe un certain nombre de filtres déjà programmés dans Nova, et un pondérateur, qui prend en compte la RAM disponible.
126 168

  
127
Cette infrastructure nécessiterait, comme nous l'avons dit, l'ajout d'un filtre pour garder les hôtes homogènes. Mais d'autres problèmes se posent qui nous conduisent à externaliser la filtration des hôtes à l'extérieur de Nova : en effet, pour placer une réservation de façon optimale, il est nécessaire d'avoir une vue sur le calendrier de réservation.
128
Intégrer ceci dans Nova, à travers les filtres ou les pondérateurs personnalisés, ne semble pas être le meilleur design.
129

  
130
Cependant, Nova facilite l'intégration de filtre et pondérateurs tiers, en permettant à l'utilisateur de préciser dans le fichier de configuration de Nova le nom du module Python correcpondant à l'élément tier à charger. Cette classe hérite d'une classe Nova, et implémente les méthodes nécessaires.
131
L'utilisateur peut passer des hints en arguments, et les filtres récupérerent leur valeur.
132
Ainsi, Climate exploite l'architecture extensible permise par Nova, en fournissant filtres et pondérateurs.
169
Cette infrastructure nécessiterait, comme nous l'avons dit, l'ajout d'un filtre pour garder les hôtes homogènes. Mais d'autres problèmes se posent qui nous conduisent à externaliser la filtration des hôtes à l'extérieur de Nova : en effet, pour placer une réservation de façon optimale, il est nécessaire d'avoir une vue sur le calendrier de réservation. Intégrer ceci dans Nova, à travers les filtres ou les pondérateurs personnalisés, ne semble pas être le meilleur design.
133 170

  
134 171
\subsubsection{API}
135 172
L'API offre les fonctionnalités de gestion des réservations.
136 173
Pour créer les réservations, les utilisateurs utilisent les paramètres suivants : host\_properties (propriétés des hôtes), start\_time (date de début au plus tôt), end\_time (date de début au plus tard), duration (durée de la réservation), quantity (nombre d'hôtes à réserver).
137 174
Si l'utilisateur ne précise par les paramètres start\_time et end\_time, la réservation est de type immédiate (elle commence maintenant et dure la durée précisée). Sinon, il est possible de planifier une réservation dans le futur. La réservation dans le futur peut permettre aux utilisateurs de s'assurer de bien avoir les resources au moment voulu. On peut aussi imaginer des modèles de facturation différents si l'utilisateur anticipe ses réservations.
175
Dans un premier temps, le paramètre "scheduler" n'est pas disponible à l'utilisateur.
138 176

  
139 177
Climate dispose d'un frontend REST API pour la gestion des réservations, qui exploite deux backends (Inventory et Scheduler).
140 178

  
141 179
L'API effectue deux étapes pour traiter la requête de création de réservation. Premièrement elle contacte Climate Inventory pour trouver les hôtes qui correspondent aux prérequis précisés dans host\_properties, et qui sont disponibles.
142 180
Secondement, les hôtes filtrés sont passés, ainsi que les paramètres de l'utilisateur, à Climate Scheduler, et celui-ci trouve une période libre où mettre la réservation.
143 181

  
144
L'API de Climate n'est pas seulement utilisé par les utilisateurs.
182
L'API de Climate n'est pas seulement utilisée par les utilisateurs.
145 183
Nova l'utilise aussi, pour trouver les hôtes non réservés ou attachés à une réservation, ainsi que tous les modules qui auraient besoin de consulter le calendrier des réservations.
146 184

  
147 185
Cette API est sécurisée par l'emploi des tokens Keystone. Selon le rôle correspondant à ce token, elle permet ou non de retrouver l'ID des hôtes physiques attachés à un réservation. En effet, il s'agit d'une information plus ou moins confidentielle, cachée aux utilisateurs simples qui n'ont pas un rôle d'administrateur.
......
155 193
\hline
156 194
\bfseries Method & \bfseries URL & \bfseries Description\\
157 195
\hline
158
POST & /réservations/ & Creates a réservation\\
159
GET & /réservations/ & Lists the réservations\\
160
GET & /réservations/<réservation-id> & Describes a réservation\\
161
DELETE & /réservations/<réservation-id> & Cancels a réservation\\
162
\hline
163
\end{tabular}
164
\end{table}
165

  
166
\begin{table}
167
\renewcommand{\arraystretch}{1.3}
168
\caption{réservation creation arguments}
169
\label{climate_creation_arguments_table}
170
\centering
171
\begin{tabular}{|l|l|}
172
\hline
173
\bfseries Argument & \bfseries Description\\
174
\hline
175
start\_time & Not sooner than timestamp \\
176
end\_time & Not later than timestamp \\
177
duration & réservation duration \\
178
quantity & Number of hosts \\
179
host\_properties & Criteria to select the hosts \\
196
GET & /properties/ & Lists the properties\\
197
POST & /reservations/ & Creates a réservation\\
198
GET & /reservations/ & Lists the réservations\\
199
GET & /reservations/<réservation-id> & Describes a réservation\\
200
DELETE & /reservations/<réservation-id> & Cancels a réservation\\
180 201
\hline
181 202
\end{tabular}
182 203
\end{table}
......
185 206
Il s'agit d'un service RPC, interrogé par Climate API pour retrouver les hôtes candidats à une demande de réservation.
186 207
Les hôtes candidats sont ceux qui matchent les propriétés requises par l'utilisateur, et ne sont pas utilisés (leur champ running\_vm = 0 dans la base Nova). L'API de Nova est interrogée grâce au NovaClient, et le filtrage utilise la syntaxte du json\_filter de Nova.
187 208

  
188
L'inventaire prend en paramètre les host\_properties. Mais l'utilisateur doit être capable d'élaborer un tel filtre. Pour cela, il faudrait fournir un catalogue des propriétés que l'on peut trier, et éventuellement construire une couche d'abstraction si on veut permettre le filtrage sur d'autres propriétés que celles retrouvées dans les détails de l'hôte, sur Nova.
189

  
190
\subsubsection{Scheduler}
191
Le rôle de Climate Scheduler est de trouver quels sont les emplacements libres pour placer une réservation.
192
Il prend en entrée les arguments qu'à fournis l'utilisateur à Climate API, à l'exception des host\_properties qui sont remplacées par la liste des hôtes candidats retrouvés par Climate Inventory.
193
Le scheduler le plus basique se contente de trouver la première période libre, pendant la durée requise. Pour cela, il trie la liste des hôtes candidats par date de disponibilité au plus tôt. Ensuite, il prend le premier hôte de cette liste, et essai d'aggréger autant d'hôtes que nécessaire sur cette période de temps. S'il n'y en a pas assez, il trouve le second hôte disponible au plus tôt, et recommence le processus.
194
% TODO: insertion de l'algo de FULL, FREE, PROPOSAL.
195
Il serait souhaitable d'étendre les possiblités de ce scheduler, qui actuellement place les réservations au plus tôt. On pourrait optimiser le placement des réservations pour minimiser le nombre d'extinction redémarrage (aggrégation possiblement à la fin plutôt qu'au début). D'autre critère pourraient jouer, comme le coût de l'énergie. Par contre, cela pourrait se traduire par une complextité de recherche des réservations plus grande.
196

  
197
Lorsque plusieurs choix sont possible, le scheduler n'en retourne qu'un, pour éviter de dévoiler l'usage du datacenter.
198

  
199
\paragraph{Suggestions}
200
Certaines plateformes sont totalement ouvertes. De ce fait, un mécanisme de suggestion est superflu.
201
D'autres sont fermées, et un mécanisme de suggestion serait très utile pour éviter de rejeter des demandes utilisateurs, ou simplement proposer un meilleur placement de réservation, qui arrange à la fois l'utilisateur et le provider.
202
Mais si ces plateformes sont fermées, c'est pour une bonne raison, et faire des suggestions serait dévoiler l'état du datacenter.
203
Cependant, un utilisateur qui voudrait le deviner pourrait faire un grand nombre de requêtes, avec des critères trop sélectifs.
204
Dans ce type de plaforme, il faut donc se prémunir de ce type d'attaque, en fixant des limites aux valeurs extrêmes des paramètres, et en limitant le nombre de requête par seconde. On ne peut pas facturer la tentative de création de réservation, en revanche.
205

  
206
\paragraph{Annulation}
207
Les réservations peuvent être annulées, avant leur fin, afin de ne pas monopoliser des ressources dont l'utilisateur n'a plus besoin, et avant leur commencement, si l'utilisateur change d'avis.
208
Cependant, une annulation doit entraîner une pénalité pour l'utilisateur, car celui-ci pourrait faire des réservations multiples suivies d'annulations pour tenter de deviner l'infrastructure du datacenter. Et d'autre part, une annulation avant la fin d'une réservation dénote une mauvaise estimation de la durée de la réservation.
209
Cette pénalité se traduit par un remboursement à moins de 100\%, de la durée de réservation qui n'a pas encore été consommée.
210
Avant le début de réservation, plus celle-ci est annulée tôt, plus le pourcentage de remboursement est élevé. Cependant, si elle est annulée immédiatement, la réservation n'est pas remboursée à hauteur de 100\%. Après le début de la réservation, plus l'utilisateur l'annule tard (proche de sa date de fin), plus le pourcentage de remboursement tend vers 100\%.
209
L'inventaire prend en paramètre les host\_properties. Mais l'utilisateur doit être capable d'élaborer un tel filtre. Pour cela, il utilise la méthode de l'API /properties/, qui fournit un catalogue des propriétés que l'on peut trier. Cette méthode liste les propriétés présentes dans les détails de hôte enregistrés dans la base Nova, mais le DCIM peut en masquer certaines, et en ajouter d'autres.
211 210

  
212 211
\subsubsection{Power}
213 212
Climate Power permet de gérer les modes de veille des machines. Comme Climate dispose d'un calendrier de réservation dans le temps, il est facile de s'en servir pour savoir quand mettre en veille et allumer les machines. Pour prendre une décision, il faut tenir compte des prochaines réservation qui vont devenir active, et de la probabilité qu'une réservation non réservée soit ordonnancée sur une machine donnée. Lorsque qu'une réservation devient active, soit l'utilisateur a immédiatement besoin de toute ses ressources (dans ce cas là ce module devra anticiper les réservations qui vont devenir active et allumer les machines en avance), soit il veut simplement avoir la garantie de disposer d'un certain nombre de machines, mais n'est pas très regardant sur le délai de mise en route. Dans ce dernier cas, laisser ses machines en veille un peu plus longtemps lui fera économiser la consommation idle. Ou pourrait par exemple donner la possibilité à l'utilisateur de préciser le nombre de machine qu'il souhaite utiliser immédiatement.
214 213

  
215 214
L'utilisateur doit avoir accès à l'API de Climate Power pour gérer lui même la consommation de ses machines en fonction du temps, s'il n'a pas besoin de la même quantité de machine dans le temps. Nova aussi utilise cette API, pour allumer un hôte lorsqu'une instance non-réservée doit y être lancée.
216 215

  
217
Cela nous amène à parler des réservations à profil variable : au cours d'un calcul, on peut imaginer que le nombre de resources nécessaire varie fortement. L'idéal serait que l'utilisateur puisse faire une réservation en précisant, par tranche horaire, le nombre de noeuds qu'il souhaite voir allumé. Cependant, cela est très difficilement faisable en pratique, car il est difficile de déterminer à l'avance le temps que va prendre chaque étape dans le calcul. Une alternative serait de donner à l'utilisateur, au cours d'une réservation, d'aggréger d'autres hôtes à sa réservation, selon ses besoins.
218

  
219 216
Climate doit choisir quel mode de veille utiliser. Plus la veille est profonde, puis cela met du temps à rallumer la machine et plus cela est coûteux en terme d'énergie.
220 217
Il faut aussi éviter d'éteindre et rallumer trop souvent les machines, pour une question d'usure du matériel (on peut immaginer que plus la machine a été rallumée/éteinte, moins elle a de chance de changer d'état. Cependant, cela favorise les vieilles machines, qui sont pourtant les moins efficaces.
221 218

  
222 219
\subsection{Nova}
223 220
Nova est le module de lancement d'instances d'OpenStack. Par défaut, lorsqu'un instance doit être chargée, les hôtes passent dans des filtres qui ne laissent passer que les hôtes éligibles. Ensuite, les hôtes restants sont pondérés, et ceux de poids les plus faibles sont élus. Le scheduler permet de passer des scheduler\_hint.
224 221

  
222
Nova facilite l'intégration de filtre et pondérateurs tiers, en permettant à l'utilisateur de préciser dans le fichier de configuration de Nova le nom du module Python correspondant à l'élément tier à charger. Cette classe hérite d'une classe Nova, et implémente les méthodes nécessaires.
223
L'utilisateur peut passer des hints en arguments, et les filtres récupérerent leur valeur.
224
Ainsi, Climate exploite l'architecture extensible permise par Nova, en fournissant filtres et pondérateurs.
225

  
225 226
\subsubsection{Filtering}
226 227
Le filtre Nova accepte un scheduler hint, nommé réservation\_id, qui est l'ID de la réservation retourné par Climate au moment de la réservation.
227 228
Si l'utilisateur fournit une réservation ID, le filtre contacte Climate API, en fournissant un token admin, et retrouve ainsi la liste des hôtes associés à la réservation.
228
Si l'utilisateur ne fournit pas de réservation ID, Nova contacte Climate pour établir la liste de tous les noeuds réservés à l'instant T. Seuls les hôtes qui ne sont pas dans cette liste sont éligibles.
229
Si l'utilisateur ne fournit pas de réservation ID, Nova contacte Climate pour établir la liste de tous les noeuds réservés à cet instant donné. Seuls les hôtes qui ne sont pas dans cette liste sont éligibles.
229 230

  
230 231
\subsubsection{Weighing}
231
Nous créerons deux Nova pondérateurs:
232
- Le premier pondérera les machines en fonction du temps libre jusqu'à la prochaine réservation : dans le cas d'une instance non réservée, il faudra scheduler cette instance sur la machine qui est libre pendant le plus longtemps, afin de diminuer la probabilité de devoir migrer la VM, si l'utilisateur n'a toujours par libéré son instance et que l'hôte sur laquelle est tourne va bientôt être réservé par une réservation qui devient active. Dans le cas d'une instance réservée, cette étape est sautée.
233
- Le second pondérera les machines en fonction de leur efficacité énergétique. Ce filtre contactera Kwranking, en passant la liste des hôtes en paramètre. Il trie ensuite le résultat pour ne garder que les X hôtes les plus efficients.
232
Nous créerons deux Nova pondérateurs.
233

  
234
Le premier pondérera les machines en fonction du temps libre jusqu'à la prochaine réservation : dans le cas d'une instance non réservée, il faudra scheduler cette instance sur la machine qui est libre pendant le plus longtemps, afin de diminuer la probabilité de devoir migrer la VM, si l'utilisateur n'a toujours par libéré son instance et que l'hôte sur laquelle est tourne va bientôt être réservé par une réservation qui devient active. Dans le cas d'une instance réservée, cette étape est sautée.
235

  
236
Le second pondérera les machines en fonction de leur efficacité énergétique. Ce filtre contactera Kwranking, en passant la liste des hôtes en paramètre. Il trie ensuite le résultat pour ne garder que les hôtes les plus efficients.
237

  
234 238
Il faudra veiller à la pondération, afin que le premier filtre ait une "haute priorité".
235 239

  
236 240
\subsection{Kwapi}
237 241
Kwapi is our framework, designed for acquiring energy consumption metrics. It allows, among other, to upload metrics from the wattmeters to Ceilometer.
238 242

  
239
Its architecture is based on a layer of drivers, responsible for the acquisition metrics, and a layer of plugins that collect these metrics. The communication between these two layers goes through a bus. In the case of a distributed architecture, a plugin can listen to several drivers at remote locations (see Figure \ref{fig_architecture}).
243
Its architecture is based on a layer of drivers, responsible for the acquisition metrics, and a layer of plugins that collect these metrics. The communication between these two layers goes through a bus.
240 244

  
241 245
Drivers and plugins are easily extensible to support other types of wattmeters, and provide other services.
242 246

  
......
267 271

  
268 272
L'utilisation de ce module consiste à lui passer une liste d'hôtes en paramètre, qu'il retourne enrichie, pour chaque hôte, de sa la métrique en flop/w, la conso min, avg, max.
269 273

  
270
% Kwranking écoute le bus Ceilometer, entre le pollster et le Collector. Et crée une base de donnée.
271
% L'efficacité des machines, dans notre modèle, se calcul en fonction de la performance, et de la conso.
272
% La performance peut être estimée soit à partir d'un benchmark, mais cela est contraignant, soit à partir des CPU info.
273
% Pour cela, l'API de Nova expose des CPU info. On prend en compte la famille du processeur, et le nombre de sockets, core, threads, et aussi de la fréquence / mémoire cache.
274
% L'idée d'exploiter les bogomips est mauvaise car ils ne sont pas significatifs, et dépendent de l'optimisation du jeu d'instruction du processeur.
275
% Le modèle pourra ensuite être complexifié pour tenir compte de la présence de GPUs.
276
% Il faudrait aussi tenir compte du temps et de l'énergie nécesaire pour atteindre les différents niveaux de veille.
277
% Et également du cycle de vie des machines.
278

  
279 274
\subsection{Kwassign}
280 275
La facturation devrait tenir compte de l'usage qui est fait des ressources. Cela permet d'inciter les clients à mieux optimiser leur programmes et permet à ceux dont les programmes sont légers d'avoir des tarifs plus abordables.
281 276
Ce modèle de facturation nécessite deux choses : la première est d'avoir des équipements de mesures de la consommation énergétique, et la seconde de pouvoir assigner ces mesures à un utilisateur particulier. Les environnements mono-tenancy se prêtent bien à cette opération, car il n'y a pas besoin de recourir à des estimations de la consommation des VMs, qui pourraient être remises en question.
......
289 284
Ce design un peu intrusif pourrait cependant évoluer. Il est impossible d'annuler les métriques publiées par le pollster, ce qui fait que les métriques sont stockées deux fois dans Ceilometer collector. Une fois assignées, et une fois pas assignées. Il faudrait donc mieux que ce soit le pollster qui gère l'assignation.
290 285

  
291 286
\section{Limitations}
292
Nous pouvons identifier deux types de limitations : celles d'ordres stratégique, et celles portant sur des éléments techniques susceptibles d'évoluer.
287
Nous pouvons identifier deux types de limitations : celles inhérentes au système de réservation, et celles portant sur des éléments techniques susceptibles d'évoluer.
293 288

  
294
Plusieurs zones d'ombres subsistent :
295
- Dans l'inventaire, on se base sur le host id, qui semble être la référence des hyperviseurs. Mais dans les filtres Nova, c'est l'hostname qui est utilisé. Du coup, à qui faut-il faire confiance ? Le plus simple serait de retrouver l'ID à partir du hostname dans le filtre Nova, mais comment ?
296

  
297
- L'inventaire, comme il n'a pas de database, doit contacter Nova à de nombreuses reprises.
298
Une fois pour avoir la liste des hôtes, puis une fois pour chaque hôte (complexité = 2*N).
289
Il serait souhaitable de donner des conseils de placement à l'utilisateur, pour diminuer sa facture (en économisant de l'énergie), ou honorer une requête trop contraignante. Cependant, il ne faut pas non trop d'éléments sur le datacenter.
299 290

  
300
- Pour filtrer sur les propriétés, on utiliser le json filter extrait de nova.
301
Il supporte l'imbrication à 2 niveaux seulement, me semble-t-il.
302
L'idéal serait d'avoir un service qui expose un catalogue de properties, que l'utilisateur peut consulter pour élaborer des filtres complexes.
291
S'il n'y a plus assez de machines libres pour honorer une demande de réservation, les instances non réservées pourraient être migrées et aggrégées afin de libérer de la place. Pour cela, il faut regrouper ces instances, en fonction du type d'hôte requis.
303 292

  
304
De plus, le filtre actuel ne supporte pas la fonction "homogeneous". En effet, un utilisateur peut vouloir des hôtes peu importe leurs performances, mais l'important c'est qu'il soient homogènes. Trop de mémoire ce n'est pas gênant. Mais un CPU ou un network card hétérogène peut être embêtant... Du coup, quel est le critère d'homogénéité (CPU + network ???).
305 293

  
306
- Le filtre Nova effectue de nombreuses requêtes. Il faudrait qu'il puisse demander "quels sont les hôtes non réservés ? " à Climate.
307 294

  
308
S'il n'y a plus assez de machines libres pour honorer une demande de réservation, les VMs pourraient être migrées et aggrégées afin de libérer de la place.
309
Pour cela, il faut faire de groupe de réservations qui ont besoin du même type d'hôtes.
310 295

  
311
Il serait souhaitable de donner des conseils de placement à l'utilisateur, pour diminuer sa facture (en économisant de l'énergie), ou honorer une requête trop contraignante. Cependant, il ne faut pas non trop d'éléments sur le datacenter.
296
% \section{Scénarios envisagés}
297
% Un service de réservation permettrait de réaliser les scénarios suivants.
312 298

  
299
% \subsection{Provider spécialisé HPC}
300
% On peut voir le cloud comme un ensemble de resources, appartenant à un, ou plusieurs propriétaires s'il s'agit de plusieurs clouds mutualisés grâce à un broker.
301
% Parmi cet ensemble de resources, il existe des sous-ensembles qui sont suffisament homogènes sur certains critères pour pouvoir intéresser des clients avec des besoins spécifiques. Ces clients peuvent être des particuliers, mais aussi des entreprises spécialisées dans la vente de ressources de cloud. Par exemple, une entreprise spécialisée dans la fourniture d'infrastructure HPC pourrait réserver tous les noeuds qui se prêtent à cette activité.
313 302

  
314 303
\section{Conclusion}
315
Climate supporte actuellement la réservation de noeuds entiers, ce qui est utile dans un contexte HPC.
316
Mais nous pourions généraliser ce système de réservation de resources à d'autre éléments, à plus fine granularité : réservation de CPU, de mémoire, etc.
317
Il faut aussi déterminer si les ressources sont choisies au moment de la réservation, ou si elles sont simplement décomptés des resources disponibles (assignation du matériel à la réservation ou à l'instanciation de machines virtuelles).
318

  
319
L'API de Climate pourrait, à terme, être fusionnée à Nova. En effet, Nova ne supporte que le lancement d'instances immédiates, et la réservation à l'avance de resources pourrait être intéressante. Actuellement, les resources réservées sont des hôtes, mais peut-être certains use-case seraient intéressés par la réservation de resources à fine-granularité (CPU, RAM, etc).
320
Climate pourrait supporter plusieurs algorithme de scheduling (comme dans Nova, où il est possible de préciser des filtres personnalisés dans le fichier de configuration). On pourrait même imaginer la possibilité pour l'utilisateur de choisir son algo de placement, pour optimiser tel ou tel critère. Ou alors créer des policies pour appliquer tel ou tel algo de placement à tel ou tel utilisateur.
321
Actuellement, les machines sont triés par efficacité énergétique en prenant en compte leur CPU. Il pourrait être intéressant d'ajouter d'autres critères, comme le GPU, etc. Mais cela demanderait de connaître quelle est la part d'énergie imputée à tel ou tel composant.
322
Le calendrier de réservation pourrait être managé par le DCIM: il pourrait faire du power capping en considérant comme pleine certaines périodes de réservations (pour cela on fait la somme de la conso de toutes les machines réservées à un instant donné).
323
Et au moment de la réservation, un pondérateur pourrait pondérer les périodes de réservation en fonction du coût du courant.
324
De ce fait, l'architecture de Climate doit être très modulaire, avec la possibilité de pluger ses propre plugins.
304
Nous avons vu que dans un contexte HPC, pouvoir avoir la garantie d'être seul sur sa machine était indispensable. Pour cela, il y a besoin d'avoir un système de réservation de ressources. Ce calendrier de réservation des ressources impliqué dans un tel système peut aisément être exploité pour bénéficier d'autres avantages.
305

  
306
D'un point de vue utilisateur, la réservation permet de garantir l'accès au ressources dans le futur. Sans réservation, il y aurait une concurrence accrue entre les utilisateurs, et il ne serait pas possible aux utilisateurs prévoyant d'avoir plus de chances d'accéder aux ressources en anticipant leur réservation.
307

  
308
Pour le DCIM, il est possible prévoir la charge du datacenter, et de proposer des tarifs qui varient en fonction de cette charge, pour inciter les utilisateurs à réserver durant les périodes creuses. Cela permet donc d'une part un lissage du trafic, et d'autre part on peut imaginer la possiblité pour le DCIM de plafonner la consommation énergétique : en connaissant les réservations à l'avance (en tout cas dans le cas du modèle où les hôtes sont choisis au moment de la réservation) il est possible de savoir s'il peut accepter des nouvelles réservation durant une période donnée, sans dépasser la consommation instantannée maximale qu'il se sera fixée.
309

  
310
D'autre part, le contexte HPC nécessitait d'obtenir des noeuds à performances homogène. Devant la variété des besoins utilisateurs, il est apparu nécessaire de lui donner la possibilité de décrire les caractéristiques de ses hôtes avec une fine granularité. Et selon les hôtes candidats et leurs périodes de disponibilité, le système peut s'appuyer sur des stratégies internes afin d'optimiser certains critères (efficacité énergétique, charge du datacenter, coût du courant électrique, etc). Ces stratégies étant choisies soit par le DCIM, soit par l'utilisateur.
311

  
312
Un tel système de réservation de ressources s'applique ici à la réservations d'hôtes entier, mais il pourrait être généralisé à bien d'autres types de ressources (espace de stockage, réseau, etc).
313

  
314
\section*{Acknowledgment}
315
Not yet available.
316
% This research is supported by the French FSN (Fonds national pour la Société Numérique) XLcloud project. Some experiments presented in this paper were carri
317
% ed out using the Grid'5000 experimental testbed, being developed under the INRIA ALADDIN development action with support from CNRS, RENATER and several Univ
318
% ersities as well as other funding bodies (see https://www.grid5000.fr). Authors wish to thank Julien Danjou for his help during the integration of Kwapi wit
319
% h Openstack and Ceilometer.
320

  
321
\section*{References}
322
Not yet available.
325 323

  
326 324
\end{document}

Formats disponibles : Unified diff