A Software Development Kit for Virtual Storage Systems Fotios Nikolaidis

Total Page:16

File Type:pdf, Size:1020Kb

A Software Development Kit for Virtual Storage Systems Fotios Nikolaidis Tromos : a software development kit for virtual storage systems Fotios Nikolaidis To cite this version: Fotios Nikolaidis. Tromos : a software development kit for virtual storage systems. Other [cs.OH]. Université Paris-Saclay, 2019. English. NNT : 2019SACLV033. tel-02443225 HAL Id: tel-02443225 https://tel.archives-ouvertes.fr/tel-02443225 Submitted on 17 Jan 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Tromos: A Software Development Kit for virtual storage systems Thèse de doctorat de l’Université Paris-Saclay préparée à Université de Versailles-Saint-Quentin-en-Yvelines Ecole doctorale n◦580 Sciences et technologies de l’information et de la NNT : 2019SACLV033 communication (STIC) Spécialité de doctorat: Informatique Thèse présentée et soutenue à Versailles, le 22/May/2019, par M. FOTIOS NIKOLAIDIS Composition du Jury : Mickael Krajecki Professeur, Université de Reims Présidente, Rapporteur William Jalby Professeur, Université de Versailles Directeur de thèse Soraya Zertal MCF/HDR, Université de Versailles co-encadrant de thèse Philippe Deniel CEA/DAM, Bruyere le chatel co-encadrant de thèse Maria Perez Professeur, Université de Madrid Rapporteur Jacques Jorda MCF/HDR, Université de Toulouse Examinateur Denis Barthou Professeur, Université de Bordeaux Examinateur Gael Thomas Professeur, Telecom Sud Paris Examinateur 1 2 Titre: Tromos: un cadre pour la construction de systèmes de stockage distribués Mots clés: Blob storage, Stockage distribué, Stockage sur le nuage, Storage containers Résumé: Parmi la mise à l’échelé, la portabil- application. Une telle conception aide à re- ité, la distribution du charge de travail, et autres porter les décisions d’I/O jusqu’à la phase de dé- raisons, les applications vont bénéficier la plate- ploiement, qui est la clé de la Transférabilité ; forme du stockage des données qui present le de la sécurité de l’autorité la moins élevée ; de code le plus efficace. Cela, cependant, n’est pas la fédération des fournisseurs de stockage non- trivial. Chaque plateforme aboutie aux accom- collaboratif; de l’échelle d’application de deux- plissements diversifiés and, par conséquent, elle ième ordre indépendante au stockage de don- requiert le rôle d’une application pour achever nées ; et la distribution de données des règles plusieurs chemins de codage. L’implémentation avec des critères comme la résilience, le ren- des tels chemins n’est pas évidente. Elle re- dement, l’efficacité du stockage et le coût. Le quiert une grand effort, des hautes compé- fait qu’un tel logiciel intermédiaire soit « per- tences de programmation et suivant elle con- sonnalisé » à l’application, signifie également tient un fort risque des erreurs. Les problèmes que chaque application doit mettre en œuvre sa se présentent quand les applications doivent de "saveur". Pour ce faire, nous introduisons un supporter plusieurs stockages des données en SDK, appelé Tromos, pour les développeurs, afin parallèle. Dans cette dissertation, on introduit de synthétiser des systèmes de stockage dis- le terme "storage containers" comme une évo- tribués personnalisés sans programmation des lution naturelle du stockage des donées. Les systèmes. Tout ce qu’il faut aux développeurs "storage containers" sont des application inter- est de modéliser l’environnement souhaité dans médiaires de gestion des données qui sépare un fichier de définition. Le SDK va gérer le reste la logique d’I/O de la logique d’affaires et la du processus. Il est distribué avec une large logique de computations d’une application. Dans gamme de plugins intégrés pour le traitement des cette thèse, nous introduisons le terme « ré- I/O, le traitement des requêtes, les algorithmes cipients de stockage » comme la prochaine de sélection, les méthodes de reconstruction de logique dans l’évolution du stockage. Il s’agit données, le traitement de cohérence, et la vi- d’un logiciel intermédiaire de gestion des don- sualisation. Pour faire une analogie, "storage nées qui sépare la logique d’I/O de la logique containers" découplent la gestion des données métier et de calcul d’une application. Autrement de la plateforme de stockage physique de la dit, ils séparent les changements apportés au même manière que les containers Docker décou- code des applications par les utilisateurs scien- plent l’environnement d’application des serveurs tifiques des changements apportés aux actions physiques. En guise de démonstration de fais- d’I/O par les développeurs ou les administra- abilité, nous utilisons Tromos pour prototyper des teurs. Contrairement aux systèmes « à usage environnements de stockage personnalisés que général » existants, dont l’objectif est d’effectuer nous comparons à Gluster, un système à us- « décemment » pour le plus grand nombre pos- age général appartenant à RedHat. Les résultats sible d’applications, les systèmes « application- ont montré que les environnements auto-produits tailored » conservent la connaissance et ne fonc- surpassent Gluster simplement en enlevant toute tionnent de façon optimale que pour une seule fonctionnalité inutile de la ligne de stockage. 3 Title: Tromos: A Software Development Kit for virtual storage systems Keywords: Blob storage, Distributed storage, Cloud Storage, Storage containers Abstract: application codes by science users from changes Modern applications tend to diverge both in the made to I/O actions by developers or administra- I/O profile and storage requirements. Match- tors. ing a scientific or commercial application with To facilitate the development and deployment of a general-purpose system will most likely yield a “storage container" we introduce a framework suboptimal performance. Even in the presence called Tromos. Through its lens, all that it takes of “purpose-specific” systems, applications with for an application architect to spin-up a custom multiple classes of workloads are still in need storage solution is to model the target environ- to disseminate the workload to the right system. ment into a definition file and let the framework This strategy, however, is not trivial as differ- handles the rest. Tromos comes with a repos- ent platforms aim at diversified goals and there- itory of plugins which the architect can choose fore require the application to incorporate multi- as to optimize the container for the application at ple codepaths. Implementing such codepaths is hand. Available options include data transforma- non-trivial, requires a lot of effort and program- tions, data placement policies, data reconstruc- ming skills, and is error-prone. The hurdles are tion methods, namespace management, and on- getting worse when applications need to lever- demand consistency handling. age multiple data-stores in parallel. In this disser- As a proof-of-concept we use Tromos to proto- tation, we introduce “storage containers" as the type customized storage environments which we next logical in the storage evolution. A “storage compare against Gluster; a “general-purpose” container" is virtual infrastructure that decouples system owned by RedHat. The results showed the application from the underlying data-stores in that the auto-produced environments outperform the same way Docker decouples the application the more mature Gluster by merely removing the runtime from the physical servers. In other words, unnecessary overhead of unused features. it is middleware that separate changes made to Université Paris-Saclay Espace Technologique / Immeuble Discovery Route de l’Orme aux Merisiers RD 128 / 91190 Saint-Aubin, France One picture, a thousand thanks !!!! This dissertation is dedicate to our friend Dimitris Ganosis 4 Contents 1 One picture, a thousand thanks !!!! 4 1 Introduction 2 1.1 Block Devices . .2 1.2 Filesystems . .3 1.2.1 VFS . .4 1.2.2 POSIX limitations . .5 1.3 Object-based Storage . .9 1.4 Data stores . 11 1.4.1 Cluster . 12 1.4.2 Grid . 13 1.4.3 Cloud . 13 1.5 Designing scalable data-stores . 14 1.5.1 CAP theorem . 15 1.5.2 BASE model . 15 2 Application-tailored storage 18 2.1 Application-tailored storage system . 20 2.1.1 Portability . 21 2.1.2 Federated Storage Toolkit . 21 2.1.3 Second-order management . 23 2.2 SDK for distributed storage systems . 24 5 CONTENTS 6 2.2.1 Components . 26 2.2.2 Virtual Storage Infrastructure . 27 3 Programmable Devices 29 3.1 Objectives . 29 3.1.1 Portability . 29 3.1.2 Differentiated Content access . 30 3.2 Device Driver Synthesis . 31 3.2.1 Modeling Language . 31 3.3 Device Runtime . 35 3.3.1 Channels . 35 3.3.2 Streams . 37 3.3.3 I/O Phase . 39 3.4 Summary . 41 3.4.1 Related Work . 41 4 Programmable I/O Processors 43 4.1 Objectives . 43 4.1.1 In-transit processing . 43 4.1.2 Data Distribution . 44 4.1.3 Bidirectional streams . 44 4.2 Driver Synthesis . 44 4.2.1 Processing kernels . 46 4.2.2 Graph . 51 4.3 Driver Runtime . 54 4.3.1 Network Ports . 54 4.3.2 Federated Network Discovery . 55 4.4 Summary . 56 4.4.1 Related Work . 57 5 Programmable Coordinators 59 5.1 Objectives . 59 CONTENTS 7 5.1.1 Metadata Catalog . 59 5.1.2 Distributed Synchronization . 60 5.2 Driver Synthesis . 60 5.2.1 Modeling Language . 61 5.3 Driver Runtime . 63 5.3.1 Update Transaction . 64 5.3.2 Ordering . 65 5.3.3 Leases over locks . 65 5.3.4 Heartbeat . 65 5.3.5 View Transactions . 67 5.3.6 Update Record Masking . 67 5.4 Summary . 69 5.4.1 Related Work .
Recommended publications
  • Unix Protection
    View access control as a matrix Protection Ali Mashtizadeh Stanford University Subjects (processes/users) access objects (e.g., files) • Each cell of matrix has allowed permissions • 1 / 39 2 / 39 Specifying policy Two ways to slice the matrix Manually filling out matrix would be tedious • Use tools such as groups or role-based access control: • Along columns: • - Kernel stores list of who can access object along with object - Most systems you’ve used probably do this dir 1 - Examples: Unix file permissions, Access Control Lists (ACLs) Along rows: • dir 2 - Capability systems do this - More on these later. dir 3 3 / 39 4 / 39 Outline Example: Unix protection Each process has a User ID & one or more group IDs • System stores with each file: • 1 Unix protection - User who owns the file and group file is in - Permissions for user, any one in file group, and other Shown by output of ls -l command: 2 Unix security holes • user group other owner group - rw- rw- r-- dm cs140 ... index.html 3 Capability-based protection - Eachz}|{ groupz}|{ z}|{ of threez}|{ lettersz }| { specifies a subset of read, write, and execute permissions - User permissions apply to processes with same user ID - Else, group permissions apply to processes in same group - Else, other permissions apply 5 / 39 6 / 39 Unix continued Non-file permissions in Unix Directories have permission bits, too • Many devices show up in file system • - Need write permission on a directory to create or delete a file - E.g., /dev/tty1 permissions just like for files Special user root (UID 0) has all
    [Show full text]
  • What If What I Need Is Not in Powerai (Yet)? What You Need to Know to Build from Scratch?
    IBM Systems What if what I need is not in PowerAI (yet)? What you need to know to build from scratch? Jean-Armand Broyelle June 2018 IBM Systems – Cognitive Era Things to consider when you have to rebuild a framework © 2017 International Business Machines Corporation 2 IBM Systems – Cognitive Era CUDA Downloads © 2017 International Business Machines Corporation 3 IBM Systems – Cognitive Era CUDA 8 – under Legacy Releases © 2017 International Business Machines Corporation 4 IBM Systems – Cognitive Era CUDA 8 Install Steps © 2017 International Business Machines Corporation 5 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 6 IBM Systems – Cognitive Era cuDNN v6.0 for CUDA 8.0 © 2017 International Business Machines Corporation 7 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 8 IBM Systems – Cognitive Era © 2017 International Business Machines Corporation 9 IBM Systems – Cognitive Era © 2017 International Business Machines Corporation 10 IBM Systems – Cognitive Era cuDNN and NVIDIA drivers © 2017 International Business Machines Corporation 11 IBM Systems – Cognitive Era Prepare your environment • When something goes wrong it’s better to Remove local anaconda installation $ cd ~; rm –rf anaconda2 .conda • Reinstall anaconda $ cd /tmp; wget https://repo.anaconda.com/archive/Anaconda2-5.1.0-Linux- ppc64le.sh $ bash /tmp/Anaconda2-5.1.0-Linux-ppc64le.sh • Activate PowerAI $ source /opt/DL/tensorflow/bin/tensorflow-activate • When you
    [Show full text]
  • A Practical UNIX Capability System
    A Practical UNIX Capability System Adam Langley <[email protected]> 22nd June 2005 ii Abstract This report seeks to document the development of a capability security system based on a Linux kernel and to follow through the implications of such a system. After defining terms, several other capability systems are discussed and found to be excellent, but to have too high a barrier to entry. This motivates the development of the above system. The capability system decomposes traditionally monolithic applications into a number of communicating actors, each of which is a separate process. Actors may only communicate using the capabilities given to them and so the impact of a vulnerability in a given actor can be reasoned about. This design pattern is demonstrated to be advantageous in terms of security, comprehensibility and mod- ularity and with an acceptable performance penality. From this, following through a few of the further avenues which present themselves is the two hours traffic of our stage. Acknowledgments I would like to thank my supervisor, Dr Kelly, for all the time he has put into cajoling and persuading me that the rest of the world might have a trick or two worth learning. Also, I’d like to thank Bryce Wilcox-O’Hearn for introducing me to capabilities many years ago. Contents 1 Introduction 1 2 Terms 3 2.1 POSIX ‘Capabilities’ . 3 2.2 Password Capabilities . 4 3 Motivations 7 3.1 Ambient Authority . 7 3.2 Confused Deputy . 8 3.3 Pervasive Testing . 8 3.4 Clear Auditing of Vulnerabilities . 9 3.5 Easy Configurability .
    [Show full text]
  • System Calls System Calls
    System calls We will investigate several issues related to system calls. Read chapter 12 of the book Linux system call categories file management process management error handling note that these categories are loosely defined and much is behind included, e.g. communication. Why? 1 System calls File management system call hierarchy you may not see some topics as part of “file management”, e.g., sockets 2 System calls Process management system call hierarchy 3 System calls Error handling hierarchy 4 Error Handling Anything can fail! System calls are no exception Try to read a file that does not exist! Error number: errno every process contains a global variable errno errno is set to 0 when process is created when error occurs errno is set to a specific code associated with the error cause trying to open file that does not exist sets errno to 2 5 Error Handling error constants are defined in errno.h here are the first few of errno.h on OS X 10.6.4 #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* Input/output error */ #define ENXIO 6 /* Device not configured */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file descriptor */ #define ECHILD 10 /* No child processes */ #define EDEADLK 11 /* Resource deadlock avoided */ 6 Error Handling common mistake for displaying errno from Linux errno man page: 7 Error Handling Description of the perror () system call.
    [Show full text]
  • Advanced Components on Top of a Microkernel
    Faculty of Computer Science Institute for System Architecture, Operating Systems Group Advanced Components on Top of A Microkernel Björn Döbel What we talked about so far • Microkernels are cool! • Fiasco.OC provides fundamental mechanisms: – Tasks (address spaces) • Container of resources – Threads • Units of execution – Inter-Process Communication • Exchange Data • Timeouts • Mapping of resources TU Dresden, 2012-07-24 L4Re: Advanced Components Slide 2 / 54 Lecture Outline • Building a real system on top of Fiasco.OC • Reusing legacy libraries – POSIX C library • Device Drivers in user space – Accessing hardware resources – Reusing Linux device drivers • OS virtualization on top of L4Re TU Dresden, 2012-07-24 L4Re: Advanced Components Slide 3 / 54 Reusing Existing Software • Often used term: legacy software • Why? – Convenience: • Users get their “favorite” application on the new OS – Effort: • Rewriting everything from scratch takes a lot of time • But: maintaining ported software and adaptions also does not come for free TU Dresden, 2012-07-24 L4Re: Advanced Components Slide 4 / 54 Reusing Existing Software • How? – Porting: • Adapt existing software to use L4Re/Fiasco.OC features instead of Linux • Efficient execution, large maintenance effort – Library-level interception • Port convenience libraries to L4Re and link legacy applications without modification – POSIX C libraries, libstdc++ – OS-level interception • Wine: implement Windows OS interface on top of new OS – Hardware-level: • Virtual Machines TU Dresden, 2012-07-24 L4Re:
    [Show full text]
  • Lecture Notes in Assembly Language
    Lecture Notes in Assembly Language Short introduction to low-level programming Piotr Fulmański Łódź, 12 czerwca 2015 Spis treści Spis treści iii 1 Before we begin1 1.1 Simple assembler.................................... 1 1.1.1 Excercise 1 ................................... 2 1.1.2 Excercise 2 ................................... 3 1.1.3 Excercise 3 ................................... 3 1.1.4 Excercise 4 ................................... 5 1.1.5 Excercise 5 ................................... 6 1.2 Improvements, part I: addressing........................... 8 1.2.1 Excercise 6 ................................... 11 1.3 Improvements, part II: indirect addressing...................... 11 1.4 Improvements, part III: labels............................. 18 1.4.1 Excercise 7: find substring in a string .................... 19 1.4.2 Excercise 8: improved polynomial....................... 21 1.5 Improvements, part IV: flag register ......................... 23 1.6 Improvements, part V: the stack ........................... 24 1.6.1 Excercise 12................................... 26 1.7 Improvements, part VI – function stack frame.................... 29 1.8 Finall excercises..................................... 34 1.8.1 Excercise 13................................... 34 1.8.2 Excercise 14................................... 34 1.8.3 Excercise 15................................... 34 1.8.4 Excercise 16................................... 34 iii iv SPIS TREŚCI 1.8.5 Excercise 17................................... 34 2 First program 37 2.1 Compiling,
    [Show full text]
  • Open Source Copyrights
    Kuri App - Open Source Copyrights: 001_talker_listener-master_2015-03-02 ===================================== Source Code can be found at: https://github.com/awesomebytes/python_profiling_tutorial_with_ros 001_talker_listener-master_2016-03-22 ===================================== Source Code can be found at: https://github.com/ashfaqfarooqui/ROSTutorials acl_2.2.52-1_amd64.deb ====================== Licensed under GPL 2.0 License terms can be found at: http://savannah.nongnu.org/projects/acl/ acl_2.2.52-1_i386.deb ===================== Licensed under LGPL 2.1 License terms can be found at: http://metadata.ftp- master.debian.org/changelogs/main/a/acl/acl_2.2.51-8_copyright actionlib-1.11.2 ================ Licensed under BSD Source Code can be found at: https://github.com/ros/actionlib License terms can be found at: http://wiki.ros.org/actionlib actionlib-common-1.5.4 ====================== Licensed under BSD Source Code can be found at: https://github.com/ros-windows/actionlib License terms can be found at: http://wiki.ros.org/actionlib adduser_3.113+nmu3ubuntu3_all.deb ================================= Licensed under GPL 2.0 License terms can be found at: http://mirrors.kernel.org/ubuntu/pool/main/a/adduser/adduser_3.113+nmu3ubuntu3_all. deb alsa-base_1.0.25+dfsg-0ubuntu4_all.deb ====================================== Licensed under GPL 2.0 License terms can be found at: http://mirrors.kernel.org/ubuntu/pool/main/a/alsa- driver/alsa-base_1.0.25+dfsg-0ubuntu4_all.deb alsa-utils_1.0.27.2-1ubuntu2_amd64.deb ======================================
    [Show full text]
  • HP Storageworks Clustered File System Command Line Reference
    HP StorageWorks Clustered File System 3.0 Command Line reference guide *392372-001* *392372–001* Part number: 392372–001 First edition: May 2005 Legal and notice information © Copyright 1999-2005 PolyServe, Inc. Portions © 2005 Hewlett-Packard Development Company, L.P. Neither PolyServe, Inc. nor Hewlett-Packard Company makes any warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Neither PolyServe nor Hewlett-Packard shall be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material. This document contains proprietary information, which is protected by copyright. No part of this document may be photocopied, reproduced, or translated into another language without the prior written consent of Hewlett-Packard. The information is provided “as is” without warranty of any kind and is subject to change without notice. The only warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Neither PolyServe nor HP shall be liable for technical or editorial errors or omissions contained herein. The software this document describes is PolyServe confidential and proprietary. PolyServe and the PolyServe logo are trademarks of PolyServe, Inc. PolyServe Matrix Server contains software covered by the following copyrights and subject to the licenses included in the file thirdpartylicense.pdf, which is included in the PolyServe Matrix Server distribution. Copyright © 1999-2004, The Apache Software Foundation. Copyright © 1992, 1993 Simmule Turner and Rich Salz.
    [Show full text]
  • Operating System Support for Parallel Processes
    Operating System Support for Parallel Processes Barret Rhoden Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2014-223 http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-223.html December 18, 2014 Copyright © 2014, by the author(s). All rights reserved. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission. Operating System Support for Parallel Processes by Barret Joseph Rhoden A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate Division of the University of California, Berkeley Committee in charge: Professor Eric Brewer, Chair Professor Krste Asanovi´c Professor David Culler Professor John Chuang Fall 2014 Operating System Support for Parallel Processes Copyright 2014 by Barret Joseph Rhoden 1 Abstract Operating System Support for Parallel Processes by Barret Joseph Rhoden Doctor of Philosophy in Computer Science University of California, Berkeley Professor Eric Brewer, Chair High-performance, parallel programs want uninterrupted access to physical resources. This characterization is true not only for traditional scientific computing, but also for high- priority data center applications that run on parallel processors. These applications require high, predictable performance and low latency, and they are important enough to warrant engineering effort at all levels of the software stack.
    [Show full text]
  • Mochi-JCST-01-20.Pdf
    Ross R, Amvrosiadis G, Carns P et al. Mochi: Composing data services for high-performance computing environments. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY 35(1): 121–144 Jan. 2020. DOI 10.1007/s11390-020-9802-0 Mochi: Composing Data Services for High-Performance Computing Environments Robert B. Ross1, George Amvrosiadis2, Philip Carns1, Charles D. Cranor2, Matthieu Dorier1, Kevin Harms1 Greg Ganger2, Garth Gibson3, Samuel K. Gutierrez4, Robert Latham1, Bob Robey4, Dana Robinson5 Bradley Settlemyer4, Galen Shipman4, Shane Snyder1, Jerome Soumagne5, and Qing Zheng2 1Argonne National Laboratory, Lemont, IL 60439, U.S.A. 2Parallel Data Laboratory, Carnegie Mellon University, Pittsburgh, PA 15213, U.S.A. 3Vector Institute for Artificial Intelligence, Toronto, Ontario, Canada 4Los Alamos National Laboratory, Los Alamos NM, U.S.A. 5The HDF Group, Champaign IL, U.S.A. E-mail: [email protected]; [email protected]; [email protected]; [email protected]; [email protected] E-mail: [email protected]; [email protected]; [email protected]; [email protected] E-mail: [email protected]; [email protected]; [email protected]; {bws, gshipman}@lanl.gov E-mail: [email protected]; [email protected]; [email protected] Received July 1, 2019; revised November 2, 2019. Abstract Technology enhancements and the growing breadth of application workflows running on high-performance computing (HPC) platforms drive the development of new data services that provide high performance on these new platforms, provide capable and productive interfaces and abstractions for a variety of applications, and are readily adapted when new technologies are deployed. The Mochi framework enables composition of specialized distributed data services from a collection of connectable modules and subservices.
    [Show full text]
  • Android Porting Guide Step by Step
    Android Porting Guide Step By Step ChristoferBarometric remains Derron left-handstill connects: after postulationalSpenser snoops and kinkilywispier or Rustin preacquaint microwaves any caterwaul. quite menacingly Hewie graze but intubated connectedly. her visionaries hereditarily. The ramdisk of the logs should be placed in API calls with the thumb of the code would cause problems. ROMs are desperate more difficult to figure naked but the basic skills you seek be taught here not be applied in principle to those ROMs. Find what catch the prescribed procedures to retrieve taken. Notification data of a surface was one from android porting guide step by step by specific not verify your new things at runtime. Common interface to control camera device on various shipsets and used by camera source plugin. If tap have executed any state the commands below and see want i run the toolchain build again, like will need maybe open a fancy shell. In cases like writing, the input API calls are they fairly easy to replace, carpet the accelerometer input may be replaced by keystrokes, say. Sometimes replacing works and some times editing. These cookies do not except any personally identifiable information. When you decide up your email account assess your device, Android automatically uses SSL encrypted connection. No custom ROM developed for team yet. And Codeaurora with the dtsi based panel configuration, does charity have a generic drm based driver under general hood also well? Means describe a lolipop kernel anyone can port Marshmallow ROMs? Fi and these a rain boot. After flashing protocol. You least have no your fingertips the skills to build a full operating system from code and install navigate to manage running device, whenever you want.
    [Show full text]
  • Enforcing Abstract Immutability
    Enforcing Abstract Immutability by Jonathan Eyolfson A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree of Doctor of Philosophy in Electrical and Computer Engineering Waterloo, Ontario, Canada, 2018 © Jonathan Eyolfson 2018 Examining Committee Membership The following served on the Examining Committee for this thesis. The decision of the Examining Committee is by majority vote. External Examiner Ana Milanova Associate Professor Rensselaer Polytechnic Institute Supervisor Patrick Lam Associate Professor University of Waterloo Internal Member Lin Tan Associate Professor University of Waterloo Internal Member Werner Dietl Assistant Professor University of Waterloo Internal-external Member Gregor Richards Assistant Professor University of Waterloo ii I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners. I understand that my thesis may be made electronically available to the public. iii Abstract Researchers have recently proposed a number of systems for expressing, verifying, and inferring immutability declarations. These systems are often rigid, and do not support “abstract immutability”. An abstractly immutable object is an object o which is immutable from the point of view of any external methods. The C++ programming language is not rigid—it allows developers to express intent by adding immutability declarations to methods. Abstract immutability allows for performance improvements such as caching, even in the presence of writes to object fields. This dissertation presents a system to enforce abstract immutability. First, we explore abstract immutability in real-world systems. We found that developers often incorrectly use abstract immutability, perhaps because no programming language helps developers correctly implement abstract immutability.
    [Show full text]