knit component composition for systems software
play

Knit: Component Composition for Systems Software Alastair Reid, - PowerPoint PPT Presentation

Knit: Component Composition for Systems Software Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, Eric Eide University of Utah Knit 1 Why Components? Everyone is writing too much code Not enough code reuse Hard to


  1. Knit: Component Composition for Systems Software Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, Eric Eide University of Utah Knit 1

  2. Why Components? � Everyone is writing too much code � Not enough code reuse � Hard to reconfigure � Hard to understand � Hard to test/verify � Exceptions: Click, Scout, Ensemble, Fox, MMLite, OSKit, … Knit 2

  3. Why Not Components? � Overhead � Runtime � Programmer time � Advanced systems don’t work with C � Complex component interdependencies � Locking restrictions � Top/bottom-half � Bootstrap sequence Knit 3

  4. Goal of Knit Project To make components practical for systems programming Knit 4

  5. Key to Achieving Goal Static configuration language � Enables error detection � Enables optimization Knit 5

  6. Target#1: The Utah OSKit [SOSP’97] � Approximately 500 components: Device drivers, bootstrap code, TCP/IP stacks, filesystems, SNMP, etc. � Doesn’t impose architecture � 10 6 lines of code from Linux, FreeBSD, NetBSD, Mach, Fluke, etc. Knit 6

  7. Outline � Introduction � The Knit component model � Atomic units � Compound units � Automatic Initialization � Detecting Configuration Errors � Implementation and Performance � Open issues Knit 7

  8. Atomic Units [PLDI’98] s e r ve _c gi s e r ve _f i l e - I os ki t i nt s e r ve _we b( … ) { - DKERNEL i f ( … ) - DHAVE_CONFI G s e r ve _c gi ( … ) ; e l s e s e r ve _f i l e ( … ) ; } s e r ve _we b Knit 8

  9. Compound Units [PLDI’98] f i l e s pr oc e s s e s serve_file serve_cgi select_server s e r ve _we b Knit 9

  10. Initialization x86 init_x86(); VM IDE init_IDE(); init_VM(); pthreads init_threads(); init_filesys(); init_main(); filesys main Knit 10

  11. IDE X Initialization x86 init_x86(); VM init_IDE(); init_VM(); pthreads init_threads(); init_filesys(); init_main(); filesys main Knit 11

  12. When Can We Break Cycles? Component ‘contains’ subcomponents 1. VM threads locks No dependency between initializers 2. f_init f g g_init Knit 12

  13. Automatic Initialization � Knit generates initialization sequence � Cycles are resolved by refining initialization dependencies in units � Experience � 5% of units need dependencies refined � Programmers find initialization a big win Knit 13

  14. Detecting Composition Errors threads filesys console panic ethernet Knit 14

  15. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 15

  16. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 16

  17. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 17

  18. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 18

  19. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 19

  20. Detecting Composition Errors locks threads filesys console panic interrupts ethernet Knit 20

  21. Detecting Composition Errors threads context(threads) <= ProcessContext context(filesys) <= context(threads) filesys context(console) <= context(filesys) console context(panic) <= context(console) panic NoContext <= context(ethernet) ethernet ProcessContext < NoContext Knit 21

  22. Extensible Constraint System � Constraint system propagates properties through component interconnections � Knit can detect global errors � Constraint system is extensible � In context X, don’t do Y � Type system for Modular IP Routers (e.g., Click) � … Knit 22

  23. Knit � Supports C, assembly and object files � Separates interconnections from code � Automatic initialization � Extensible constraint system � Allows cyclic component dependencies � Allows multiple instances of components � Text based Knit 23

  24. Outline � Introduction � The Knit component model � Implementation and Performance � Open issues Knit 24

  25. Implementation (Unoptimized) .c cc .o .unit Knit symbol_rename .o ld a.out Knit 25

  26. Performance � Component cost should not distort system structure � Reduce overhead by eliminating function calls Knit 26

  27. Click and Clack � Click modular network router from MIT [SOSP’99] � Clack � Re-implementation of Click using Knit � Similar performance to Click � Many small components Knit 27

  28. Performance of Clack 100% 100% 79% Time per Packet 75% 65% 50% 25% 0% Unoptimized Monolithic Optimized Knit 28

  29. Open Issues � Is Knit general purpose? � Need more users � Need more applications � Is the constraint system extensible enough? � Implicit linking vs. explicit linking? Knit 29

  30. Conclusions � State of the art component system for C � Targeted at systems code � Automatic initialization � Detects local and global errors � Low performance overhead � Available ASAP: http://www.cs.utah.edu/flux/ Knit 30

Recommend


More recommend