Show simple item record

dc.contributor.advisorHari Balakrishnan and James Mickens.en_US
dc.contributor.authorNetravali, Ravi Arunen_US
dc.contributor.otherMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Science.en_US
dc.date.accessioned2019-02-14T15:50:14Z
dc.date.available2019-02-14T15:50:14Z
dc.date.copyright2018en_US
dc.date.issued2018en_US
dc.identifier.urihttp://hdl.handle.net/1721.1/120423
dc.descriptionThesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2018.en_US
dc.descriptionCataloged from PDF version of thesis.en_US
dc.descriptionIncludes bibliographical references (pages 131-144).en_US
dc.description.abstractWeb applications have significantly increased in complexity over the past several decades to support the wide range of services and performance requirements that users have come to expect. On the client-side, browsers are multi-process systems that can handle numerous content formats, rich interactivity, and asynchronous 10 patterns. On the server-side, applications are distributed across many machines and employ multi-tier architectures to implement application logic, caching, and persistent storage. As a result, web applications have become complex distributed systems that are difficult to understand, debug, and optimize. This dissertation presents fine-grained data flows as a new mechanism for understanding and optimizing complex web applications. Fine-grained data flows comprise the set of low-level reads and writes made to distributed application state during execution. We explain how fine-grained data flows can be tracked efficiently in production systems. We then present four concrete systems that illustrate how fine-grained data flows enable powerful performance optimizations and debugging primitives. Polaris dynamically reorders client HTTP requests during a page load to maximally overlap network round trips without violating data flow dependencies, reducing page load times by 34% (1.3 seconds). Prophecy uses data flow logs to create a snapshot of a mobile page's post-load state, which clients can process to elide intermediate computations, reducing bandwidth consumption by 21%, energy usage by 36%, and load times by 53% (2.8 seconds). Vesper is the first system to accurately and automatically measure page time-to-interactivity, without using heuristics or developer annotations. Vesper determines a page's interactive state by firing event handlers and analyzing the resulting data flows. Vesper-guided optimizations improve time- to- interactivity by 32%, generating more satisfaction in user studies than systems targeting past metrics. Cascade is the first replay debugger to support distributed, fine-grained provenance tracking. Cascade also enables speculative bug fix analysis, i.e., replaying a program to a point, changing program state, and resuming replay, using data flow tracking and causal analysis to evaluate potential bug fixes.en_US
dc.description.statementofresponsibilityby Ravi Arun Netravali.en_US
dc.format.extent144 pagesen_US
dc.language.isoengen_US
dc.publisherMassachusetts Institute of Technologyen_US
dc.rightsMIT theses are protected by copyright. They may be viewed, downloaded, or printed from this source but further reproduction or distribution in any format is prohibited without written permission.en_US
dc.rights.urihttp://dspace.mit.edu/handle/1721.1/7582en_US
dc.subjectElectrical Engineering and Computer Science.en_US
dc.titleImproving web applications with fine-grained data flowsen_US
dc.typeThesisen_US
dc.description.degreePh. D.en_US
dc.contributor.departmentMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
dc.identifier.oclc1084478486en_US


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record