a characterization of state spill in modern oses
play

A Characterization of State Spill in Modern OSes Kevin Boos Emilio - PowerPoint PPT Presentation

A Characterization of State Spill in Modern OSes Kevin Boos Emilio Del Vecchio Lin Zhong ECE Department, Rice University EuroSys 2017 How do we deal with complexity? 2 Modularization complex 1 2 3 4 system 3 Modularization 1


  1. A Characterization of State Spill in Modern OSes Kevin Boos Emilio Del Vecchio Lin Zhong ECE Department, Rice University EuroSys 2017

  2. How do we deal 
 with complexity? 2

  3. Modularization complex 
 1 2 3 4 system 3

  4. Modularization 1 2 3 4 4

  5. Reducing complexity should make things easier… • Process migration • Fault isolation & 
 1 2 fault tolerance • Live update, hot- swapping, software 3 4 virtualization • Maintainability • Security and more 5

  6. Modularization is not enough! interactions have 
 complex effects! 1 2 Effects of interactions: • Propagation of data 
 3 4 and control • Changes to the state 
 of each entity state spill 6

  7. 
 State spill in a nutshell a new term to describe the phenomenon when: A software entity’s state undergoes lasting change as a result of an interaction with another entity. 7

  8. Outline of contributions 1. Define and identify state spill as a root cause of challenging problems in computing 2. Classify state spill examples collected from real OSes 3. Automate state spill detection with S TATE S PY 4. Results from Android system services 8

  9. Definition of State Spill 9

  10. State spill definition by example Source (application) Destination (system service) public void main() { public class SystemService { int id = ; static int sCount; Before byte cfg = ; byte mConfig; fn cb = handleCb; List<Callback> mCallbacks; (empty) int unrelated; service.addCallback( id, cfg, cb); public void addCallback( int id, byte cfg, During temporary log(“added cb!”); Callback cb) { } int b = id; Log.print("id=" + b); mConfig = cfg; void handleCb() { mCallbacks.add(cb); // do something sCount++; After } } } 10

  11. S TATE S PY : Automated State Spill Detection 11

  12. S TATE S PY : runtime + static analysis • Goal: help developers understand how 
 state spill occurs in their entities Running Source software files entity Resolution requests State spill Static Runtime Modification-reachable results analysis analysis whitelist Runtime type resolutions 12

  13. State Spill in Android Services 13

  14. Evaluating Android system services Binder IPC Application Proxy Stub Service transactions • StateSpy monitors service stub boundary ( onTransact ) • monkey induces real apps to invoke various transactions Found state spill in 94% of service stubs analyzed. 14

  15. Secondary state spill Entity Entity Entity S D 1 D 2 User Applications UiModeManagerService VibratorService KeyguardService AlarmManagerService UsbService AudioService InputManagerService ActivityManagerService HdmiControlService NotificationManagerService DisplayManagerService PowerManagerService UserManagerService StatusBarManagerService WindowManagerService SensorService PackageManagerService Hinders fault tolerance, hot-swapping, maintainability 15

  16. Case study: Flux [EuroSys’15] App App App Sensor Location Input Sensor Location Input Alarm Notification Clipboard Alarm Notification Clipboard • Android app migration via record & replay • Manually handles residual dependencies with decorator methods for each service transaction • Significant effort to overcome state spill Alex Van’t Hof, et al., “Flux: multi-surface computing in Android”, EuroSys 2015. 16

  17. Case study: Flux [EuroSys’15] App App App ? ? Sensor Location Input Sensor Location Input Alarm Notification Clipboard Alarm Notification Clipboard • Android app migration via record & replay • Manually handles residual dependencies with decorator methods for each service transaction • Significant effort to overcome state spill Alex Van’t Hof, et al., “Flux: multi-surface computing in Android”, EuroSys 2015. 17

  18. Case study: Flux [EuroSys’15] App App App Sensor Location Input Sensor Location Input Alarm Notification Clipboard Alarm Notification Clipboard • Android app migration via record & replay • Manually handles residual dependencies with decorator methods for each service transaction • Significant effort to overcome state spill 18

  19. Comparison with Flux Not 
 decorated Flux 
 77% 23% • Using Flux apps, we reproduced 113 unique transactions for analysis with S TATE S PY 19

  20. High correlation with state spill Causes 
 Not 
 State Spill decorated Flux 
 77% 23% 92% • State spill identifies problematic service transactions • and which states need special handling 20

  21. S TATE S PY catches what’s missing missed Not 
 21% decorated Flux 
 77% 23% Safely ignored 79% • Found state spill in 18 (21%) undecorated methods, each is potentially dangerous • Easy detection demonstrates S TATE S PY ’s utility 21

  22. Parting Thoughts 22

  23. Designs to avoid state spill • Client-provided resources • Stateless communication RESTful principle • Separation of multiplexing from indirection • Hardening of entity state • Modularity without interdependence 23

  24. Related work • Coupling [1] /modularity [2] as a necessary condition • Info-flow analysis [3,4] • Designs that partially reduce state spill • Compartmentalizing important states Barrelfish/DC [5] , Microreboot [6] , CuriOS [7] • • RESTful architectures (web) [11,12] 24

  25. Conclusion • State spill is an underlying problem that hinders many computing goals • Prevalent and deeply ingrained in many OSes • Reducing state spill will lead to better designs • More so than minimizing coupling, etc. • Next steps: redesign OS to minimize state spill S TATE S PY & more: http://download.recg.org 25

  26. References (1) J. Offutt, et al., “A software metric system for module coupling.” Journal of Systems and Software , 1993. (2) B. Ford, et al., “The Flux OSKit: A substrate for kernel and language research.” SOSP , 1997. (3) S. Arzt, et al., “FlowDroid: Precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps.” PLDI , 2014. (4) W. Enck, et al., “TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones.” OSDI , 2010. (5) G. Zellweger, et al., “Decoupling cores, kernels, and operating systems.” OSDI , 2014. (6) G. Candea, et al., “Microreboot - a technique for cheap recovery.” OSDI , 2004. (7) F. David, et al., “CuriOS: Improving reliability through operating system structure.” OSDI , 2008. (8) D. Engler, et al., “Exokernel: An operating system architecture for application-level resource management.” SOSP , 1995. (9) D. Porter, et al., “Rethinking the library os from the top down.” ASPLOS , 2011. (10) A. Madhavapeddy, et al., “Unikernels: Library operating systems for the cloud.” ASPLOS , 2013. (11) C. Pautasso and E. Wilde. “Why is the web loosely coupled?: a multi-faceted metric for service design.” WWW , 2009. (12) C. Pautasso, et al., “RESTful web services vs. ’big’ web services: making the right architectural decision.” WWW , 2008. 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend