The Alchemy Project Jay Lepreau Matthew Flatt Eric Eide Alastair Reid John Regehr University of Utah Contract F33615-00-C-1696 April 4, 2002 1 Problem Description Embedded RT software development too difficult, prone to error, expensive System-level programming using components is especially hard Embedded sys, VM, middleware, OS Non-local constraints Need build-time assurance Existing code Performance Static component architecture versus dynamic execution behavior 2 Project Objectives & Technical Approach Robust, flexible component composition A mostly static architecture Design rules checked at system build time Aspects implemented using components “Weaving” by composition … provides: “Product line” flexibility, increased reuse AOP Architectural clarity 3 Objectives & Approach (2) Policy-driven, reservation-based scheduling in UAV Formalizing execution environments to provide restricted execution models to get software engineering benefits in middleware and embedded systems; could be applied in UAV Schedulability-driven priority scheduling with mixed preemption and non-preemption Application support for monitoring and debugging scheduling behavior -- not directly applicable but is a good part of our toolkit 4 Jiazzi: Components for Java Support for component programming on a large scale Jiazzi components… import and export signatures are parameterized by imports. are defined and composed using an external language. Flexible class extensions (mixins) Groups of related mixin functionality (aspects) Transition to Purdue OVM 5 Maya: Compile-time Metaprogramming for Java “Macros on crack” [PLDI 2002] Maya “macros” are methods on generic functions in the parser Handi-Wrap runtime aspect weaving [AOSD 2002] Jason Baker to Purdue PhD program 6 “Task Isolation” in Java For real-time in particular For QoS in general For robustness JSR-121… more later JSR-xxx: resource management 7 UAV Resource Reservations Expose resource kernel CPU isolation to ACE, TAO, QuO, UAV Based on TimeSys Linux/RT CPU Broker: policy-directed reservation scheduling [WMMM ’01] Policies based on: Static: critical vs. non-critical flows Dynamic: feedback mechanism for reservation assignments 8 Composable Execution Environments Different subsystems want different architectures Traditional embedded software Threads and semaphores Click, TinyOS Non-preemptible events Audio, video, other signal processing Dataflow 9 Definitions Execution Model – collection of rules for: Structuring code Sequencing events Mediating access to resources Controlling namespaces Analysis and reasoning Execution Environment – instantiation of a model 10 Why Compose? Matching code to the right model gives powerful software engineering benefits Easier to: Understand Debug Analyze Extend Maintain 11 Why Compose? #2 To support diverse trust relationships – e.g. A and B mutually trusting A trusts B, but B doesn’t trust A A and B mutually untrusting Lack of trust motivates isolation Time – CPU reservation Space, crashing – process model (type-safety or MMU) Data – dependency analysis 12 Why Compose? #3 We want to reuse code that assumes a particular environment Porting code to new environment: Time consuming, error prone May lose benefits of original model Rather, we support multiple concurrent environments and late binding 13 Example B A C D non-preemptive Non-preemptive environment is not schedulable E E runs too long Solution 1: Preemptive scheduler Problem: Makes life harder for everyone – races, deadlocks, finegrained locking 14 Example Cont’d B A C D E non-preemptive preemptive Solution 2: Move E to a different environment Benefits: less locking; more efficient system; developers unconcerned with E need not be aware of preemption 15 Principle 1: Restricted Environments Components do not encapsulate control flows Written in call/return style Real-time properties and requirements explicitly declared Explicit access to shared resources Rationale: threads, implicit timing requirements, implicit sharing all compose poorly 16 Principle 2: Hierarchical Composition Permits: Modular design Coexisting diverse environments “Confinement” of resources Rationale: Environments closely match needs of components Environments seem to want to be nested 17 Principle 3: Late Binding Wait for entire system to be available for analysis before binding: Components to threads Threads to schedulers Critical sections to lock implementations Rationale: Maximize component flexibility Create efficient systems 18 Composable Execution Environments: Summary Mismatch between code and execution model can be a major problem for embedded systems Makes it hard to understand, analyze, debug, reuse Prevent mismatch with Late binding Hierarchical composition 19 Other Tools: SPAK SPAK: static priority analysis and thread mapping Support task model with mixed preemption and non-preemption Uses preemption threshold analysis to show when tasks can be run nonpreemptively without affecting schedulability Chooses schedules to maximize robustness in face of timing overruns 20 Other Tools: Hourglass Synthetic, instrumented real-time app. Requires no kernel modifications Measures: Direct and indirect costs of context switches Dispatch latency Quality of timers Interference from kernel activity (e.g., receive processing) Deadline hits/misses Supports: Priorities and CPU reservations (TimeSys) Linux, FreeBSD, Windows 2000 21 Metrics UAV & Linux/RK & CPU Broker: “Perfect” timing resilience: much quicker response to timing faults in other apps 100% CPU utilization w/o important streams missing any deadlines Reduced module coupling within and between OVM subsystems with zero performance penalty OVM product family: footprint More specific numbers soon 22 Contribution to PCES Goals Unified model for components and aspects Task/process isolation: robust architectures Functional and non-functional aspects Design rule checking (constraints) Support product families & evolution in Java Java: aspects via components and language Isolates in future COTS JVMs via JSR-121 RK-based CPU Broker for UAV Future Java-based RT policies via OVM Usable today: Jiazzi, Maya, Hourglass: open source 23 Contributions to Military Apps Family of JVMs: the OVM product line Composable RT schedulers Task isolation Resource controls VM services, footprint Object representation Design / configure time assurances Component reuse Principled use of COTS software } } } Predictable, resilient run-time behavior Fit constrained execution envs. Cheaper, faster, better development 24 Military Apps (cont’d) CPU reservations for UAV OEP, other ACE/TAO-based applications Benefits: Increased predictability Isolation of timing faults for C++ soon, Java later Challenges: Param calibration for multithreaded apps Adjustable safety margin 25 Project Tasks/Schedule OVM mobile processes as Alchemy components Resource management in OVM w/Alchemy checking Alchemy-configured memory management in OVM Jiazzi + weaver release CPU resv in UAV Maya release Alchemy-configured data layout in OVM Alchemy-configured feature selection in OVM Jiazzi release 2001 Jiazzi + constraint checker Initial OVM as Alchemy components Knit release Blue: tools Black: tool use 26 Technical Progress & Accomplishments 1. Jiazzi: components for Java New release (Jan ’02) Ongoing collaboration with Purdue 27 Accomplishments (cont’d) 2. Maya: Metaprogramming for Java Updated release Maya paper at PLDI ’02 (Jun) Handi-Wrap paper at AOSD ’02 (Apr) 28 Accomplishments (cont’d) 3. Composable EEs Initial ADL designed Assimilated TinyOS components EE for TinyOS (non-premptive events) and Click routers (dataflow) Acquired motes for experimental platform Analysis and compiler in progress 29 Accomplishments (cont’d) 4. CPU Broker for UAV Initial prototyping with free Linux/RK Finally acquired TimeSys Linux/RT! ACE Wrapper Facades for RK resource APIs, integrated with ACE Thread Manager Initial experiments toward deploying RK-enhanced UAV on the Utah Network Testbed (Emulab) 30 Next Milestones CPU reservations in UAV OEP (2Q02) Jiazzi Construct OVM from Jiazzi components (2Q02) RT-Java components (4Q02) Java “Task” isolation JSR-121 release (2Q02) CEE Initial development (2Q02) Determine application to OEPs (2Q02) 31 Collaborations OVM team (Purdue, UMD, SUNY) BBN: CPU Broker for UAV Alchemy-configured feature selection in OVM Deliver RT-JVM components (w/ Purdue) 32 Technology Transition/Transfer Software releases & users described earlier: OVM, BBN OEP, Boeing OEP? Sun JSR-121: “pseudo-task” isolation Highly relevant to real-time & robustness Potential alternate base for RT-Java A natural resource boundary OS abstractions, GC mechanisms Long line of OS/lang. research at Utah Utah has leading role in Expert Group Will be in JDK 1.5 (3Q02) Just first stage: control; next: sharing, resource management 33 Program Issues none 34 Utah Alchemy Project DARPA PCES Program www.cs.utah.edu/flux/alchemy 35 36 Artist’s Conception 37 Knit: Components for C External component definition and linking language Discussed at previous PI meetings Released Feb’01, open source Gaining experience and refining it Version 2 in progress 38 Maya and AspectJ AspectJ: language support for cross-cutting concerns Maya: compile-time metaprogramming JSE 39 How to Do It Binding components to threads: Constraint: must be schedulable Constraint: use as few threads as possible (zero, ideally) Static priority analysis will cover most cases Binding threads to schedulers: Only a few reasons for genuine scheduler diversity: temporal isolation or conflicting scheduling requirements 40 How to Do It #2 Binding critical sections to synchronization primitives: Analysis based on properties of environments that can access a particular resource; e.g. No lock for resource shared by nonpreemptible events Blocking lock for resource shared by threads Raise IRQL for resource shared by threads and interrupts 41 Metrics SW Engineering metrics Reduced module “coupling” in Jiazzi’ed systems Constraints: fewer incorrect systems composed by students, in a controlled study Mining: quicker to componentize, in a controlled study 42 Military Apps (cont’d) Jiazzi’ed event service in Boeing OEP Java-based ORB (w/ Wash U) Aspect weaving in UAV Java code At compile time using Maya At runtime using Handi-Wrap 43