"Predictable Computing" Remzi H. Arpaci-Dusseau University of Wisconsin, Madison Three trends dominate today's computer industry. The first trend is massive complexity. For example, modern operating systems contain millions of lines of code, written by large teams of developers. The second trend is the prevalence of commodity components. Today's industry consolidates on the least expensive components: PCs, ATA disks, and low-cost memories. The final trend is increasing interconnectedness. The world has become a planet-wide distributed system, where virtually every electronic gadget is a client of the network and expects 24x7 access to services. Put simply, we rely upon incredibly complex, distributed software systems, built from cheap (and hence, unreliable) components. Not surprisingly, these systems do not always behave as expected. As any user can attest: * Systems fail, often in hard-to-explain ways. * Systems perform poorly, at unexpected times. * Systems have surprising security weaknesses. We have built "Frankenstein's Computer": the computer system is a monster that we created, but over which we have lost control. Users no longer expect systems to behave in a predictable and understandable manner; in fact, the most common explanation to a situation gone awry is that "it must be the computer!" Our challenge is to build "predictable" computing systems: systems that behave in a way we can understand and in a manner we can control. When large-scale distributed services are conglomerated from complex, cheap, and often-faulty components, the parts must all seamlessly work together. This is no simple task and will require breakthroughs on a number of fronts. However, we believe there is a foundation for building predictable systems: the science of understanding. To build on this foundation, we need to fundamentally transform how we analyze complex computing systems. Our current analysis techniques are deficient, focusing on simple and directly measurable quantities such as performance. Predictable computing demands more, for example, that we analyze how systems react to component failures and handle security threats. Today, there is not even a common vocabulary to describe how a system behaves along these important axes of evaluation. For example, our textbooks do not describe how a file system reacts to disk failure, yet what could be more important to users than what happens to their data when their disks become faulty? To measure systems according to the criteria that users care about, we need not only new tools and techniques, but a new vocabulary as well. Complex computer systems challenge our ability to rigorously describe their behavior. To develop predictable computing systems, we must counter this trend. We must develop new methods and deploy usable tools. The subtitle of Mary Shelley's "Frankenstein" is "The Modern Prometheus"; in Greek legend, Prometheus stole fire from Zeus and gave it to the mortals, where fire is an allegory for understanding. By developing the tools and techniques to deconstruct computer system behavior, we can give "fire" back to the developers of computing systems; we can enable developers to build a new generation of predictable computer systems; we can avoid becoming victims of our own creation.