De nos jours, de nombreuses entreprises choisissent de plus en plus d'adopter le cloud computing. Plus précisément, en tant que clients, elles externalisent la gestion de leur infrastructure physique vers des centres de données (ou plateformes de cloud computing). La consommation d'énergie est une préoccupation majeure pour la gestion des centres de données (datacenter, DC). Son impact financier représente environ 80% du coût total de possession et l'on estime qu'en 2020, les DCs américains dépenseront à eux seuls environ 13 milliards de dollars en factures énergétiques. Généralement, les serveurs de centres de données sont conçus de manière à atteindre une grande efficacité énergétique pour des utilisations élevées. Pour diminuer le coût de calcul, les serveurs de centre de données devraient maximiser leur utilisation. Afin de lutter contre l'utilisation historiquement faible des serveurs, le cloud computing a adopté la virtualisation des serveurs. Cette dernière permet à un serveur physique d'exécuter plusieurs serveurs virtuels (appelés machines virtuelles) de manière isolée. Avec la virtualisation, le fournisseur de cloud peut regrouper (consolider) l'ensemble des machines virtuelles (VM) sur un ensemble réduit de serveurs physiques et ainsi réduire le nombre de serveurs actifs. Même ainsi, les serveurs de centres de données atteignent rarement des utilisations supérieures à 50%, ce qui signifie qu'ils fonctionnent avec des ensembles de ressources majoritairement inutilisées (appelés «trous»). Ma première contribution est un système de gestion de cloud qui divise ou fusionne dynamiquement les machines virtuelles de sorte à ce qu'elles puissent mieux remplir les trous. Cette solution n'est efficace que pour des applications élastiques, c'est-à-dire des applications qui peuvent être exécutées et reconfigurées sur un nombre arbitraire de machines virtuelles. Cependant, la fragmentation des ressources provient d'un problème plus fondamental. On observe que les applications cloud demandent de plus en plus de mémoire, tandis que les serveurs physiques fournissent plus de CPU. Dans les DC actuels, les deux ressources sont fortement couplées puisqu'elles sont liées à un serveur physique. Ma deuxième contribution est un moyen pratique de découpler la paire CPU-mémoire, qui peut être simplement appliquée à n'importe quel serveur. Ainsi, les deux ressources peuvent varier indépendamment, en fonction de leur demande. Ma troisième et ma quatrième contribution montrent un système pratique qui exploite la deuxième contribution. La sous-utilisation observée sur les serveurs physiques existe également pour les machines virtuelles. Il a été démontré que les machines virtuelles ne consomment qu'une petite fraction des ressources allouées car les clients du cloud ne sont pas en mesure d'estimer correctement la quantité de ressources nécessaire à leurs applications. Ma troisième contribution est un système qui estime la consommation de mémoire (c'est-à-dire la taille du working set) d'une machine virtuelle, avec un surcoût faible et une grande précision. Ainsi, nous pouvons maintenant consolider les machines virtuelles en fonction de la taille de leur working set (plutôt que leur mémoire réservée). Cependant, l'inconvénient de cette approche est le risque de famine de mémoire. Si une ou plusieurs machines virtuelles ont une forte augmentation de la demande en mémoire, le serveur physique peut manquer de mémoire. Cette situation n'est pas souhaitable, car la plate-forme cloud est incapable de fournir au client la mémoire qu'il a payée. Finalement, ma quatrième contribution est un système qui permet à une machine virtuelle d'utiliser la mémoire distante fournie par un autre serveur du rack. Ainsi, dans le cas d'un pic de la demande en mémoire, mon système permet à la VM d'allouer de la mémoire sur un serveur physique distant. / Nowadays, many organizations choose to increasingly implement the cloud computing approach. More specifically, as customers, these organizations are outsourcing the management of their physical infrastructure to data centers (or cloud computing platforms). Energy consumption is a primary concern for datacenter (DC) management. Its cost represents about 80% of the total cost of ownership and it is estimated that in 2020, the US DCs alone will spend about $13 billion on energy bills. Generally, the datacenter servers are manufactured in such a way that they achieve high energy efficiency at high utilizations. Thereby for a low cost per computation all datacenter servers should push the utilization as high as possible. In order to fight the historically low utilization, cloud computing adopted server virtualization. The latter allows a physical server to execute multiple virtual servers (called virtual machines) in an isolated way. With virtualization, the cloud provider can pack (consolidate) the entire set of virtual machines (VMs) on a small set of physical servers and thereby, reduce the number of active servers. Even so, the datacenter servers rarely reach utilizations higher than 50% which means that they operate with sets of longterm unused resources (called 'holes'). My first contribution is a cloud management system that dynamically splits/fusions VMs such that they can better fill the holes. This solution is effective only for elastic applications, i.e. applications that can be executed and reconfigured over an arbitrary number of VMs. However the datacenter resource fragmentation stems from a more fundamental problem. Over time, cloud applications demand more and more memory but the physical servers provide more an more CPU. In nowadays datacenters, the two resources are strongly coupled since they are bounded to a physical sever. My second contribution is a practical way to decouple the CPU-memory tuple that can simply be applied to a commodity server. Thereby, the two resources can vary independently, depending on their demand. My third and my forth contribution show a practical system which exploit the second contribution. The underutilization observed on physical servers is also true for virtual machines. It has been shown that VMs consume only a small fraction of the allocated resources because the cloud customers are not able to correctly estimate the resource amount necessary for their applications. My third contribution is a system that estimates the memory consumption (i.e. the working set size) of a VM, with low overhead and high accuracy. Thereby, we can now consolidate the VMs based on their working set size (not the booked memory). However, the drawback of this approach is the risk of memory starvation. If one or multiple VMs have an sharp increase in memory demand, the physical server may run out of memory. This event is undesirable because the cloud platform is unable to provide the client with the booked memory. My fourth contribution is a system that allows a VM to use remote memory provided by a different rack server. Thereby, in the case of a peak memory demand, my system allows the VM to allocate memory on a remote physical server.
Identifer | oai:union.ndltd.org:theses.fr/2018INPT0089 |
Date | 28 September 2018 |
Creators | Nitu, Vlad-Tiberiu |
Contributors | Toulouse, INPT, Hagimont, Daniel, Tchana, Alain-Bouzaïde |
Source Sets | Dépôt national des thèses électroniques françaises |
Language | English |
Detected Language | French |
Type | Electronic Thesis or Dissertation, Text |
Page generated in 0.0032 seconds