Skip to content

Instantly share code, notes, and snippets.

@ldct
Last active July 4, 2016 01:30
Show Gist options
  • Save ldct/70304ab419e935341dd31baa56f2804e to your computer and use it in GitHub Desktop.
Save ldct/70304ab419e935341dd31baa56f2804e to your computer and use it in GitHub Desktop.
  • Scalability := linear increase in performance
  • Scalability <= conflict-free memory access
    • aka "accesses disjoint memory (on a disjoint-access-parallel architecture)"
    • Memory is shared state
    • Cache coherence
    • 50 open() calls in the time it takes to read a contended cache line
  • OS as bottleneck
    • OS primitives (files, processes/threads/signals, sockets) used by applications
  • Linux scaling process
  • Scalable interfaces
    • "creat returns lowest FD" example
  • Scalable commutativity rule
    • Operations commute
      
    • => Results independent of order
    • => Communication is unnecessary
    • => No write conflicts
  • Proof
    • Actions
    • SIM Commutativity
    • State-sensitive (eg create-or-error doesn't commute, but for different dirs)
    • Interface-sensitive (eg two differently-balanced binary trees)
  • Commuter
    • Given an interface (eg POSIX), generate test cases that are not stopped from commuting by the interface
    • Run the test cases on an existing implementation
  • How does commuter work?
    • Reference implementation of the effect of rename
    • SE solves for "under what states do two calls to rename commute?"
  • Evaluation of commuter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment