1 / 24

Introduction: How to read and write systems papers

Introduction: How to read and write systems papers. CPS210 Spring 2006. Course basics. What is CPS210 about? Operating systems research Who should take it? Graduate students and smart undergrads Who is the instructor? Landon Cox (lpcox@cs.duke.edu)

martha
Download Presentation

Introduction: How to read and write systems papers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction: How to read and write systems papers CPS210 Spring 2006

  2. Course basics • What is CPS210 about? • Operating systems research • Who should take it? • Graduate students and smart undergrads • Who is the instructor? • Landon Cox (lpcox@cs.duke.edu) • Duke systems faculty since September ‘05 • Duke alumnus (Trinity, class of ’99) • Recently received my Ph.D. from Michigan (Dec. ‘05) • More at the end of class

  3. Outline • Hints for Computer System Design • Butler Lampson • An Evaluation of the Ninth SOSP Submissions • Roy Levin and David Redell • Course mechanics

  4. Hints for designing systems • What is a system? • Components, interconnections • Interfaces, environment • Systems do something for their environs • Exhibit this behavior via interface • Cleanly divides the world in two • Parts of the system + the environment

  5. Systems from 10,000 feet Component Component Component Component System Environment aka “the client”

  6. Why is designing systems hard? • Emergent properties • Can’t predict all component interactions • Millennium bridge • Synchronized stepping leads to swaying • Swaying leads to more forceful synchronized stepping • Leads to more swaying … • Propagation of effects • Incommensurate scaling • Trade-offs

  7. Why is designing systems hard? • Emergent properties • Propagation of effects • Want a better ride so increase the tire size • Need a larger trunk for the larger spare • Need to move the back seat forward • Need to make front seats thinner • Leads to worse driver comfort than before • Incommensurate scaling • Trade-offs

  8. Why is designing systems hard? • Emergent properties • Propagation of effects • Incommensurate scaling • Consider the giant mouse • Weight ~ size3 (volume) • Bone strength ~ size2 (cross section area) • An elephant sized mouse is not sustainable • Trade-offs

  9. Why is designing systems hard? • Emergent properties • Propagation of effects • Incommensurate scaling • Trade-offs • “Waterbed effect” • Push on one end, and the other goes up • Spam filters and smoke detectors • False positives vs false negatives

  10. Why is designing systems hard? • Emergent properties • Propagation of effects • Incommensurate scaling • Trade-offs • In the immortal words of HT Kung • “Systems hard. Must work harder.”

  11. Lamport’s hints for design • Behold, the “summary of slogans”

  12. Or, put another way … • Three design goals (the why axis) • Making it work (functionality) • Making it fast enough (speed) • Making sure that it keeps working (fault tolerance) • Three design constraints (the where axis) • Completeness • Proper interconnections/interfaces • Building an implementation

  13. “Separate the normal, worst case” • Hard for math/theory people to accept • More natural for engineers • Full disclosure: I was a math major • Make common case fast, corner case correct • Corollary • Often not worth optimizing the corner case • Depends on just how painful the corner case is • Example: disconnected operation in Coda

  14. “End-to-end” • Don’t try to be all things to all people • Functionality imposes trade-offs on others • You’ll get it right for a few, wrong for most • Keep systems lean, simple, and efficient • Allow clients to weigh their own trade-offs • They know their needs better than you • Example: Internet and IP • Simple protocol allowed others to build on top

  15. “Caching answers” • Store expensive computations’ results • Must maintain consistency of cache • Are stored answers correct? • Must manage cache residency • Which answers deserve to be in the cache? • Example: buffer cache • Going to disk takes ~ 10 milliseconds • Going to memory takes ~ microseconds

  16. “Use hints” • Hints are like cached answers • Two differences • Hints are only mostly right (may be wrong) • Can be checked against the truth • Not always reached by associative lookup • Example: file directories • Files in the same directory are likely related • Collocating them on-disk can improve access time

  17. “Compute in background” • In systems, procrastination is encouraged • Defer work as long as possible • You might end up not having to do it • Variation of “closest-deadline-first” • Especially true for performance • Keep the critical path as short as possible • Example: writing files back to a server • Most files are short-lived • Wait to see if they’re deleted before shipping

  18. “Log updates” • Writing to a log is very efficient • Only need to maintain start, end addresses • Simply append to the end • Logging preserves write order • Log cannot be corrupted by failures • Can always get back to a consistent state • Very useful for performance, fault tolerance • Example: databases

  19. “Static analysis” • Better to fail during design than run-time • Especially useful for avoiding bugs • Examples • Type-safe languages, BAN logic • Caveat • This is usually really hard • State spaces grow extremely fast

  20. Outline • Hints for Computer System Design • Butler Lampson • An Evaluation of the Ninth SOSP Submissions • Roy Levin and David Redell • Course mechanics

  21. Motivating your system • What problem are you solving? • Why is it important? • What is state-of-the-art (SOA)? • Why is SOA inadequate? • What is new about your approach? • How does it differ from SOA? • Bottom line: • Why should I care about this? • Why is this different from what I’ve already seen?

  22. Describing your system • What are the architectural/design goals? • What assumptions are you making? • Why are those assumptions reasonable? • What were the alternative approaches? • Why didn’t you take those approaches? • Bottom line: • Why should I believe that this will work?

  23. Evaluating your idea • Did you implement the architecture? • Which parts? • Does it achieve the design goals? • Did it change your original design? • Does it expose architectural limitations? • Bottom line: • Does the system solve the original problem? • Does the system introduce any new problems?

  24. Outline • Hints for Computer System Design • Butler Lampson • An Evaluation of the Ninth SOSP Submissions • Roy Levin and David Redell • Course mechanics

More Related