Please use this identifier to cite or link to this item: http://dx.doi.org/10.14279/depositonce-5449
Main Title: On predictable performance for distributed systems
Translated Title: Zur vorhersagbaren Performanz verteilter Systeme
Author(s): Suresh Puthalath, Lalith
Advisor(s): Feldmann, Anja
Referee(s): Canini, Marco
Crowcroft, Jon
Zwaenepoel, Willy
Granting Institution: Technische Universität Berlin
Type: Doctoral Thesis
Language Code: en
Abstract: Today, we increasingly rely on a plethora of interactive online services for social networking, e-commerce, video and audio streaming, email, and web search. These services need to deal with billions of visits per day while handling unprecedented volumes of data. At the same time, these services need to deliver fluid response times to their users. Failure to do so impacts the quality of experience for users and directly leads to revenue losses as well as increases in operational costs. Furthermore, the massive compute and storage demands of these large online services have necessitated a shift to the cloud. These services run inside large data-centers, across hundreds to thousands of heterogeneous servers, leading to a paradigm called warehouse-scale computing (WSCs). A complex ecosystem of fault-tolerant distributed systems back these services, each of which run on clusters of hundreds to many thousands of servers. These distributed systems include data-analytics stacks (e.g., Hadoop), distributed storage systems (e.g., Cassandra), cluster schedulers (e.g., Borg), as well as web-applications architected as micro-services (e.g., Netflix). These systems present operational challenges that occur due to several dynamic conditions, such as complex inter-server request-response patterns, server-side performance fluctuations, skews, and hot-spots in data access patterns, as well as multi-tenancy. Several of these dynamic conditions manifest at very small timescales, making operator intervention and tuning an infeasible means of addressing them. As a consequence, end-to-end system performance becomes notoriously difficult to predict and guarantee. This necessitates robust mechanisms by which distributed systems can adapt to these dynamic conditions that occur at very short timescales. To address this challenge, the goal of this dissertation is to develop adaptive mechanisms to achieve performance predictability for distributed systems. We focus our attention on two important classes of distributed systems that permeate the WSC landscape. The first is that of low-latency distributed storage-systems, which are often in the critical path of online services today. Storage servers in these settings experience performance fluctuations due to a multitude of reasons, and this significantly harms application performance. We demonstrate the need for adaptive replica selection, wherein storage clients route requests to replica servers in response to performance heterogeneity among different servers. We then present the design and implementation of the C3 system, which embodies a novel adaptive replica-selection mechanism. In C3, clients, with minimal assistance from servers, adaptively prefer faster replicas while avoiding degenerate behaviors such as load oscillations. In experiments conducted on Amazon EC2, in production settings at Spotify and SoundCloud, as well as through simulations, C3 significantly reduces tail latencies (up to 3x at the 99.9th percentile) and improves system throughput (up to 50\%). The second class of systems we focus on are service-oriented architectures (SOA) and micro-services, an increasingly popular architectural approach to building fault-tolerant online services. We present how complex interactions between different workloads can lead to significantly degraded system performance, potentially leading to widespread application outages. We discuss the challenges in meeting end-to-end performance objectives of interest in these settings, such as efficient and fair resource utilization, meeting deadlines, as well as reducing latencies. We present the design and implementation of Cicero, a system that embodies adaptive, distributed algorithms to enforce end-to-end resource management policies in SOAs and micro-services. In system evaluations wherein we emulated a production SOA, we demonstrated how Cicero can be used to achieve performance isolation among tenants, avoid cascading failures, and meet a high fraction of end-to-end deadlines.
Wir verlassen uns heutzutage zunehmend auf eine Fülle von interaktiven Onlinediensten wie beispielsweise soziale Netzwerke, E-Commerce, Video- und Audio-Streaming, E-Mail und Websuche. Diese Dienste müssen täglich oft mehrere Milliarden Anfragen beantworten und verarbeiten. Gleichzeitig müssen sie schnellstmögliche Antwortzeiten für Endnutzer liefern. Geschieht dies nicht, so leidet die Quality of Experience für die Endnutzer und führt unweigerlich zu Einnahmeverlusten sowie erhöhten Betriebskosten. Weiterhin haben die massiven Berechungs- und Speicheranforderungen dieser großen Onlinedienste zu einer Verlagerung in die Cloud geführt. Die Dienste laufen in großen Rechenzentren auf hunderten bis tausenden heterogenen Servern und haben somit zu einem Paradigmenwechsel hin zum Warehouse-Scale Computing (WSC) geführt. Die Dienste bauen weiterhin auf einem komplexen Ökosystem von fehlertoleranten verteilten Systemen auf, wobei jeder dieser Dienste wiederum auf einem Cluster von mehreren hundert oder tausend Servern ausgeführt wird. Zu diesen verteilten Systemen gehören Systeme zur Datenanalyse (z.B. Hadoop), zu verteilten Speicherlösungen (z.B. Cassandra), zu Cluster Schedulern (z.B. Borg) sowie Web-Anwendungen, welche auf Mikrodiensten aufbauen (z.B. Netflix). Aufgrund verschiedener dynamischer Aspekte, wie z.B. komplexen Anfrage-Antwort Mustern zwischen Servern, serverseitiger Performanzfluktuation und variierenden Anfrage-Verteilungen, bergen diese Systeme viele Herausforderungen im Betrieb. Viele dieser dynamischen Aspekte manifestieren sich in kürzesten Zeiträumen, so dass es für die Betreiber keine Möglichkeit des Eingreifens oder der Feinjustierung gibt. Als Konsequenz wird die Vorhersage und die Garantie der Performanz von Ende-zu-Ende-Systemen außerordentlich schwierig. Somit bedarf es robuster Mechanismen, damit sich verteilte Systeme an die dynamischen Aspekte des Betriebs anpassen können. Um obigen Herausforderungen zu begegnen, will diese Dissertation adaptive Mechanismen entwickeln, mit welchen die Vorhersage der Performanz in verteilten Systemen ermöglicht wird. Konkret betrachten wir zwei wichtige Klassen von verteilten Systemen, welche regelmäßig in der WSC-Landschaft anzutreffen sind. Als ersten Punkt untersuchen wir verteilte Speichersysteme mit geringen Antwortzeiten, welche für viele heutige Onlinedienste eine kritische Komponente darstellen. Die Performanz der Server zum Speichern von Daten unterliegt hierbei aufgrund vieler Gründe oft Fluktuationen, welche die Performanz der Anwendung verschlechtert. So demonstrieren wir den Bedarf eines adaptiven Replika-Auswahl Algorithmus, in welchem die Clients des Speicherdienstes Anfragen an verschiedene Replikas in Abhängigkeit von der jeweiligen Performanz richten. Wir präsentieren anschließend das Design und die Implementierung des C3 Systems, welches einen solchen neuartigen Replika-Auswahl Algorithmus beinhaltet. Im C3 System wenden sich Clients ohne große serverseitige Unterstützung auf dynamische Art und Weise an Replikas, ohne dass dies zu unerwünschtem Verhalten wie Last-Oszillationen führt. In unseren Experimenten, die wir auf Amazons EC2 ausgeführt haben und die auf Betriebslasten von Spotify und SoundCloud sowie Simulationen beruhen, zeigen wir, dass C3 die Endlast der Latenzverteilungen signifikant (bis zu verdreifacht im 99,9ten Perzentil) und den System-Durchsatz (um bis zu 50%) steigert. Als zweites System betrachten wir serviceorientierte Architekturen (SOA) und Mikrodienste, welche zunehmend an Popularität als Architektur zur Entwicklung von fehlertoleranten Diensten gewinnen. Wir zeigen auf, wie komplexe Interaktionen zwischen verschiedenen Arbeitslasten zu signifikanten Einbußen der Systemperformanz führen können, was wiederum zum Ausfall von Anwendungen führen kann. Wir diskutieren die Herausforderungen, bestimmte Ende-zu-Ende-Performanzgarantien, wie effiziente und faire Resourcenverwendung, die Einhaltung von Fristen, sowie die Reduktion der Antwortzeiten, zu realisieren. Wir stellen das Design und die Implementierung von Cicero vor, einem System, das adaptive und verteilte Algorithmen verwendet, um Richtlinien des Rourcenmangements in SOAs und Mikrodiensten umzusetzen. In unseren Systemevaluationen, in denen wir ein Produktions-SOA emulieren, zeigen wir, wie Cicero dazu verwendet werden kann, die Leistungen, welche verschiedenen Endkunden gegenüber erbracht werden, zu entkoppeln und dabei wiederkehrende Fehler zu vermeiden sowie einen möglichst hohen Anteil der Ende-zu-Ende-Fristen einzuhalten.
URI: http://depositonce.tu-berlin.de/handle/11303/5850
http://dx.doi.org/10.14279/depositonce-5449
Exam Date: 27-Jun-2016
Issue Date: 2016
Date Available: 25-Aug-2016
DDC Class: DDC::000 Informatik, Informationswissenschaft, allgemeine Werke::000 Informatik, Wissen, Systeme::003 Systeme
Subject(s): distributed systems
cloud computing
performance
data stores
micro-services
verteilte Systeme
Performanz
Rechenzentren
Mikro-Dienste
Creative Commons License: https://creativecommons.org/licenses/by/4.0/
Appears in Collections:Institut für Telekommunikationssysteme » Publications

Files in This Item:
File Description SizeFormat 
sureshputhalath_lalith.pdf2.61 MBAdobe PDFThumbnail
View/Open


This item is licensed under a Creative Commons License Creative Commons