Real-time CORBA in soft-radio

Similar documents
The Design and Implementation of Real-Time CORBA 2.0: Dynamic Scheduling in TAO

Enhancing Adaptivity via Standard Dynamic Scheduling Middleware

Real-time CORBA 2.0: Dynamic Scheduling Specification

Strategized, Coordinated Services for Real-Time Middleware

Techniques for Enhancing Real-time CORBA Quality of Service

Real-time & Embedded Systems Workshop July 2007 Building Successful Real-time Distributed Systems in Java

Verteilte Systeme (Distributed Systems)

The Design and Performance of a Real-Time CORBA Scheduling Service

A QoS-aware CORBA Component Model for Distributed Real-time and Embedded System Development

Today: Distributed Objects. Distributed Objects

Middleware Support for Aperiodic Tasks in Distributed Real-Time Systems

Design and Performance of an Asynchronous Method handling Mechanism for CORBA

The Design and Performance of a Real-Time CORBA Scheduling Service

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

Operating System Support

Multimedia Systems 2011/2012

Traditional Approaches to Modeling

Communication. Distributed Systems Santa Clara University 2016

Using a Real-time, QoS-based ORB to Intelligently Manage Communications Bandwidth in a Multi-Protocol Environment

Today: Distributed Middleware. Middleware

OBJECT ADAPTER ORB CORE I/O SUBSYSTEM. struct RT_Info { wc_exec_time_; period_; importance_; dependencies_; }; 1: CONSTRUCT CALL 6: SUPPLY RUN-TIME

Computer Science. ! Other approaches:! Special systems designed for extensibility

Chapter 5: Distributed objects and remote invocation

Implementing Real-time CORBA with Real-time Java

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4

Recommendations for a CORBA Language Mapping for RTSJ

Exam Review TexPoint fonts used in EMF.

Asynchronous Events on Linux

Real-time operating systems and scheduling

Designing an Efficient & Scalable Server-side Asynchrony Model for CORBA

Administrative Stuff. We are now in week 11 No class on Thursday About one month to go. Spend your time wisely Make any major decisions w/ Client

Middleware Scheduling Optimization Techniques for Distributed Real-Time and Embedded Systems

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable

Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee

Systems Integration. Gautam H. Thaker Patrick J. Lardieri Donald Krecker Keith O Hara Chuck Winters

A QoS-aware CCM for DRE System Development

SMD149 - Operating Systems

Interprocess Communication Tanenbaum, van Steen: Ch2 (Ch3) CoDoKi: Ch2, Ch3, Ch5

Patterns in Distributed Real-Time Scheduling

DS 2009: middleware. David Evans

MODELS OF DISTRIBUTED SYSTEMS

A Generative Programming Approach to Middleware Development

CS A331 Programming Language Concepts


Java For Real-Time Enterprise Systems Delivering the Benefits of Java to the world of Real-Time distributed object computing

Predictable Interrupt Management and Scheduling in the Composite Component-based System

Concurrent activities in daily life. Real world exposed programs. Scheduling of programs. Tasks in engine system. Engine system

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Distributed and Agent Systems

Uniprocessor Scheduling. Basic Concepts Scheduling Criteria Scheduling Algorithms. Three level scheduling

The Real-Time CORBA Specification tutorial Part-2

A Predictable RTOS. Mantis Cheng Department of Computer Science University of Victoria

Figure 6.1 System layers

Chapter 13: I/O Systems. Operating System Concepts 9 th Edition

Computer Science Window-Constrained Process Scheduling for Linux Systems

Device-Functionality Progression

Chapter 12: I/O Systems. I/O Hardware

Applications, services. Middleware. OS2 Processes, threads, Processes, threads, communication,... communication,... Platform

by I.-C. Lin, Dept. CS, NCTU. Textbook: Operating System Concepts 8ed CHAPTER 13: I/O SYSTEMS

Distributed Environments. CORBA, JavaRMI and DCOM

Processes and Non-Preemptive Scheduling. Otto J. Anshus

Lecture 5: Object Interaction: RMI and RPC

Real-time CORBA Tutorial

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Electronic Payment Systems (1) E-cash

Chapter 13: I/O Systems

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001

Fine-grained Middleware Composition for the Boeing NEST OEP

DISTRIBUTED SYSTEMS [COMP9243] Distributed Object based: Lecture 7: Middleware. Slide 1. Slide 3. Message-oriented: MIDDLEWARE

Communication. Overview

Distributed Objects. Object-Oriented Application Development

Chapter 13: I/O Systems

Module 12: I/O Systems

Chapter 13: I/O Systems

Real-Time Systems Hermann Härtig Real-Time Operating Systems Brief Overview

Patterns and Performance of Real-time Middleware for Embedded Systems

Performance and Optimization Issues in Multicore Computing

Chapter 13: I/O Systems

Department of Computer Science Institute for System Architecture, Operating Systems Group REAL-TIME MICHAEL ROITZSCH OVERVIEW

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

A Real-Time Performance Comparison of Distributable Threads and Event Channels

CHAPTER - 4 REMOTE COMMUNICATION

Reference Model and Scheduling Policies for Real-Time Systems

Embedded Systems: OS. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Weapon Systems Open Architecture Overview

Using Prioritized Network Traffic to Achieve End-to-End Predictability

What is an Operating System? A Whirlwind Tour of Operating Systems. How did OS evolve? How did OS evolve?

Chapter 13: I/O Systems

Operating Systems 2 nd semester 2016/2017. Chapter 4: Threads

Chapter 12: I/O Systems

Chapter 13: I/O Systems

Chapter 12: I/O Systems. Operating System Concepts Essentials 8 th Edition

Chapter 2 System Models

The Design of the TAO Real-Time Object Request Broker

Lecture 3: Concurrency & Tasking

CHAPTER 3 - PROCESS CONCEPT

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

Model-Driven QoS Provisioning Techniques for CCM DRE Systems

Embedded Systems: OS

The Design and Performance of a Real-time CORBA Event Service

Subject Name: OPERATING SYSTEMS. Subject Code: 10EC65. Prepared By: Kala H S and Remya R. Department: ECE. Date:

Transcription:

Real-time CORBA in soft-radio Part 3a Using RT-CORBA in Dynamically Scheduled Systems Practical implementation and Code examples (Chris Gill, Irfan Pyarali) 1

Implementing Real-Time CORBA 1.2 Scheduling Heterogeneous Scheduling is when different policies can be applied Scheduling Segment is a sequence of code with specific scheduling requirements Pluggable Scheduler facilitates the use of custom scheduling disciplines Scheduling Points to interact with the scheduler at application and ORB level Distributable Threads Distributable Thread (DT) a programming model abstraction for a distributed task Loci of execution span multiple nodes and scheduling segments Identified by a unique system wide id GUID (Globally Unique Id) DT scheduling information passed through GIOP Service Contexts Across the hosts it spans 2

RT CORBA 1.2 Implementation Concepts Scheduling segment A BSS-A ESS-A Client IDL Stubs 4 Dynamic Scheduler Service Context 1 Distributable thread Service Context 3 Current locus of execution Segment scheduling policies A: EDF B: MUF A: EDF Dynamic Scheduler Object (Servant) BSS-B ESS-B IDL Skeletons Object Adapter 2 Scheduling segment B ORB Core 3 Distributable thread distributed concurrency abstraction Scheduling segment governed by a single scheduling policy Locus of execution point at which distributable thread is currently running Scheduling policies determine eligibility of different distributable threads Dynamic schedulers enforce distributable thread eligibility constraints

A Brief Digression and Several Caveats Scheduling segment A BSS-A ESS-A Client IDL Stubs 4 Service Context 1 Distributable thread Service Context 3 Current locus of execution Segment scheduling policies A: EDF B: MUF A: EDF Object (Servant) BSS-B ESS-B IDL Skeletons Scheduling segment B Object Dynamic Dynamic Adapter Heterogeneous Scheduler Scheduler Scheduling Policies ORB Core 2 4 RT-CORBA 1.2 lets you install heterogeneous schedulers Can be powerful in the hands of real-time experts Inordinately complex and difficult otherwise Even for expert systems programmers new to real-time

Early Heterogeneous Scheduling Research Angelo Corsaro s MS Thesis www.cs.wustl.edu/~corsaro/ Examines ways to reconcile heterogeneous policies Defines 3 main cases Restriction Extension General Provides a metaprogramming architecture Using specific kinds of adapters for each case Serve r Compute r End System (A) Running an Earliest Deadline First Scheduler Workstatio n Competitor Created at End-System (A) Competitor Created at End-System (B) Competitor Created at End-System (C) Satellit e Minicompute r Comm. Tower End System (B) Running an Rate Monotonic Scheduler Workstatio n Satellite dish End System (C) Running a Generic Value Based Scheduler (from Corsaro, et al., Applying Meta- Programming Techniques to Reconcile Heterogeneous Scheduling Policies in Open Distributed Real-Time Systems, DOA 2001, Rome, Italy)

6 Restriction & Extension Adapters (Corsaro) Restriction Adapters Used when properties provided by a distributable thread are a superset of those used by the scheduler (easiest case) Adapter narrows the set of properties to scheduler s needs Extension Adapters Used when distributable thread s properties are a subset of those used by the scheduler (a slightly harder case) Extension adapter provides default values for any missing properties Extension adaptation can be static (a priori) or dynamic (contextual)

General Property Adapters (Corsaro) Arbitrary mappings are possible from parameters provided by a distributable thread and ones a scheduler uses Adapters may perform arbitrary computations in general Can be viewed as a composition of restriction & extension May add constraints on parameter set interfaces/operators E.g., eligibility inheritance requires X(X&), =, <= on resulting set (Huang) distributable thread parameters Extension Restriction scheduler parameters 7

Other Things to Keep in Mind Real-time systems have a weakest-link-in-the-chain property Insufficiently bounded timing anywhere in the system can cause real-time failure of the entire system Some examples are fairly obvious while(1) considered harmful Other examples are less obvious When is while(k <= n) OK? Dynamic binding: object substitution and virtual methods Middleware-based real-time systems are further nuanced Direct manipulation of OS threads, priorities, mutexes, etc. If the middleware assumes it has control, these end-runs can again lead to real-time failure Important tension between control by application programmer and the need to manage complexity through encapsulation 8

Implementation Challenges I: Dynamic Scheduling Tasks span multiple heterogeneous hosts Tasks and hosts they span are not known a priori Propagate scheduling requirements of a task across hosts it spans Allow custom scheduling discipline plug-ins Fixed priorities for tasks insufficient for scheduling analysis Cancel a distributed task and reschedule accordingly on hosts it spans Local schedulers need to reschedule when tasks return from a remote invocation Collaboration of schedulers in the system to ensure global scheduling 9

Motivation Dynamic scheduling allows late binding of ordering decisions among competing tasks Allows greater customization w/ behavioral variation Especially useful if run-time factors influence decisions Many dynamic scheduling approaches are well-known Time-utility functions (utility accrual) Earliest deadline first Minimum laxity first (deadline remaining work) Maximum urgency first (adds criticality bias) 10

Implementation Differences for Static and Dynamic Scheduling Static Scheduling Priorities can be mapped to OS thread priorities (per mode) Schedulability can be assessed once, assured before run-time Only dispatching done on-line Dynamic Scheduling If thread priorities are used, they may need to be changed dynamically Dynamic changes in scheduling parameters (including passage of time!) represent on-line admission control / feasibility check points Scheduling and dispatching done on-line 11

Scheduling Segments BSS - begin_scheduling_segment ESS - end_scheduling_segment Host 1 BSS - A ESS - A Scheduling Segment Host 1 BSS - B ESS - B Application Call Task Execution BSS - A ESS - A Nested Scheduling Segment RTScheduling::Current has methods to begin, end and update scheduling segments and spawn a new DT Each segment s scheduling characteristics is defined by its Scheduling Parameters Nested scheduling segments allow association of different scheduling parameters begin and end of a scheduling segment should be on the same host 12

RTScheduling::Current Interface local local interface interface RTScheduling::Current RTScheduling::Current : : RTCORBA::Current RTCORBA::Current { { void void begin_scheduling_segment begin_scheduling_segment (in (in string string scheduling_segment_name, scheduling_segment_name, in in CORBA::Policy CORBA::Policy sched_param, sched_param, in in CORBA::Policy CORBA::Policy implicit_sched_param) implicit_sched_param) raises raises (UNSUPPORTED_SCHEDULING_DISCIPLINE); (UNSUPPORTED_SCHEDULING_DISCIPLINE); void void update_scheduling_segment update_scheduling_segment (in (in string string scheduling_segment_name, scheduling_segment_name, in in CORBA::Policy CORBA::Policy sched_param, sched_param, in in CORBA::Policy CORBA::Policy implicit_sched_param) implicit_sched_param) raises raises (UNSUPPORTED_SCHEDULING_DISCIPLINE); (UNSUPPORTED_SCHEDULING_DISCIPLINE); void void end_scheduling_segment end_scheduling_segment (in (in string string scheduling_segment_name); scheduling_segment_name); DistributableThread DistributableThread spawn spawn (in (in ThreadAction ThreadAction start, start, in in CORBA::VoidData CORBA::VoidData data, data, in in string string name, name, in in CORBA::Policy CORBA::Policy sched_param, sched_param, in in CORBA::Policy CORBA::Policy implicit_sched_param, implicit_sched_param, in in unsigned unsigned long long stack_size, stack_size, in in RTCORBA::Priority RTCORBA::Priority base_priority); base_priority); }; }; module module RTScheduling RTScheduling { { local local interface interface ThreadAction ThreadAction { { void void do(in do(in CORBA::VoidData CORBA::VoidData data); data); }; }; }; }; 13 Derived from RTCORBA::Current interface Encapsulates scheduling information of a scheduling segment Each DT is associated with a corresponding Current Stored in thread specific storage (key TSS vs. DTSS issues) Current objects of nested scheduling segments are chained

Pluggable Scheduling Policies/Mechanisms Waiting Distributable Threads (DTs) Running DT Lane (possibly one of many) DT QoS Descriptor Scheduling/Dispatching Enforce predictable behavior in DRE systems Alternative disciplines RMS, MUF, EDF, LLF Custom scheduling disciplines dictated by system requirements Queried via resolve_initial_references (RTScheduler) RTScheduling::Scheduler interface From which implementations are derived Interactions with application and ORB Scheduler Managers Install/manage schedulers in the ORB 14

Scheduler Bootstrapping Interface interface interface RTScheduling::Manager { Scheduler Scheduler scheduler scheduler (); (); void void scheduler scheduler (Scheduler); (Scheduler); }; }; 1 RTScheduling::Manager interface provides set/get methods To obtain manager, call ORB:resolve_initial_reference with RTScheduler_Manager Can then get or replace the scheduler implementation

Pluggable Scheduling: Most Important First (MIF) Scheduler Implementation Ready Queue of Distributable Threads MIF Scheduler maintains a ready queue of DTs 10 C V + 8 C V 1 C V New Distributable Thread DTs are queued in order of their importance C 10 V 8 C V C V 1 C V DTs in a queue are suspended on a Condition Variable Ready Queue of Distributable Threads - Distributable Thread Importance CV - Condition Variable Each executing DT yields to the scheduler at regular intervals 16

Middleware Based MIF Scheduling Ready Queue of Distributable Threads 10 C V C V 1 C V + 8 New Distributable Thread C 10 V 8 C V C V 1 C V Ready Queue of Distributable Threads 17 - Distributable Thread Importance CV - Condition Variable Benefits: scalable in # of distributable threads per OS thread Drawbacks: queue management costs for some sched policies Alternatives: OS thread per distributable thread, lanes

Fixed Priority vs. MIF Scheduler Experiments Local Work Remote Work DT3 & DT DT4 & DT6 DT12 & DT13 DT GUID on Host2 Start Time T (secs) Importance Execution Time (secs) Local Dist DT GUID on Host2 Start Time T (secs) Importance Execution Time (secs) Local Dist 12 0 1 10-12 1 2 1-13 2 1-13 1 1 10 - DT GUID on Host1 Start Time T (secs) Importance Execution Time (secs) Local Dist DT GUID on Host1 Start Time T (secs) Importance Execution Time (secs) Local Dist 3 4 10 3 1 6 4 7 8 10-4 1 8 3-4 1 4 6 6 7 4-6 10 3-18

Fixed Priority vs. MIF Scheduler, Cont. OS-level mechanism Fixed priority scheduling latency Middleware-level mechanism MIF scheduling 19

More Middleware/OS Dynamic Scheduling Share-based resource allocation may not give sufficient control Varying image sizes, contents Dynamic communication & computation requirements Need an application-based definition of progress E.g., # of frames examined for a particular kind of TCT # of bytes per frame could vary Computation time could also vary Scheduling algorithm adapts to these dynamic changes Need to convey progress Published by application/mw Used by Group Scheduling # of frames received # of frames received Expected result with group scheduling for fairness in bytes 160 140 120 100 80 60 40 20 0 1 2 3 4 6 7 Stream # Desired result with group scheduling for fairness in frames 200 10 100 0 0 1 2 3 4 6 7 Stream # 20

Metric: Frames Processed per Stream Input threads using RTCORBA Active objects as computation nodes Threads generate stimuli Tunable stimulus (message size) HI-critical LO-critical Processing time on each node is uniformly randomized over a range based on stimulus 21

Unmanaged Pipelines Stop-and-Go Kernel-level group scheduler enforces critical stream CPU access to CPU cycles (other streams unmanaged) Jittery overly synchronous waves of progress in each pipeline stage Stimulus messages between stages are bunched up 22

Pipelines Made Progress Fair Re-ran with kernel-level group scheduler to enforce critical stream CPU access and fairness (in frames) of other streams Smooth and asynchronous pipeline progress Even spacing of stimulus messages between stages, real-time data collection and scheduler reaction 23

Toward Efficient Middleware GS Open design challenge: cutting cost of telling MW scheduler progress info (kernel scheduler can already access implicitly Naïve approach: replace IOCtls with signals WIP: shared memory, prio-based top/bottom-half Expensive exchange of info for criticality enforcement w/ signal system calls 24

Future Evolution: Integration with Distributed Dynamic Scheduling Service Distributed Scheduling Service Distributed Scheduling Service works with ORB local scheduler to enforce global scheduling Set end-to-end Urgencies (MUF) or raw CORBA priorities for DTs Determine cancellation points for overload management Interact with future scheduling adaptation mechanisms RT CORBA 1.2 Pluggable Scheduler (e.g. group/utility scheduler) Real-Time 2 Thanks to Douglas Niehaus (KU), Lisa DiPippo and Victor Fay-Wolfe (URI) for the use of slides from the collaborative research funded by the DARPA PCES program.

Scheduling Points Service Context 1 BSS or Spawn USS 2 3 ESS Client in args Operation () out args + return value Object (Servant) 1. Begin scheduling segment or spawn 2. Update scheduling segment IDL Stubs 4 7 Dynamic Scheduler IDL Skeletons 6 Object Adapter 3. End scheduling segment 4. Send request. Receive request 6. Send reply 7. Receive reply ORB Core 26

Scheduling Points, Continued User / ORB Current::spawn() Current::begin_scheduling_segment() [when creating DTs] Current::begin_scheduling_segment() [when creating nested segments] Current::update_scheduling_segment() Current::end_scheduling_segment() [when ending scheduling nested segments] Current::end_scheduling_segment() [when destroying DTs] DistributableThread::cancel() Outgoing request Incoming request Outgoing reply Incoming reply Scheduler Upcall begin_new_scheduling_segment() begin_new_scheduling_segment() begin_nested_scheduling_segment() update_scheduling_segment() end_nested_scheduling_segment() end_scheduling_segment() cancel() send_request() receive_request() send_reply() receive_reply() 27

Implementation Challenges II: Distributable Threads Distributable threads span multiple heterogeneous hosts Different OS threads host multiple distributable threads Both OS and distributable thread identities must be represented explicitly Cancellation is made even more challenging by distribution Network partition, asynchronous communication Correctness of thread-identity aware mechanisms E.g., TSS, recursive locks, leader-followers pattern Need awareness of both OS tid and distributed UUID May require emulation in middleware: performance cost 28

Motivation An evolving middleware programming model Started with RPC-style remote function call abstractions CORBA, RMI, COM+ introduced method invocations Naming, Event, Trader, and Notification services added object lookup, anonymous communication, service lookup Many applications can be built using only these services An important new middleware abstraction Distributable threads are natural for certain applications I.e., long-running distributed sequential activities Integrated with dynamic scheduling semantics Design and implementation goals Allow flexible on-the-fly adaptation of functional and realtime properties on the paths a distributable thread traverses Provide efficient and predictable enforcement mechanisms 29

Implementation Differences for Distributable Threads vs. Other Models Distributable Thread End-to-end QoS Parameters passed in Context field or in distributable thread Interceptors map parameters from Current (and/or scheduler) to Context field and back EC / Notify Point-to-point QoS Parameters passed in Context field or in event Interceptors or handlers map parameters from Current or event to Context field & back RT CORBA Call Point-to-point QoS Parameters passed in Context field ORB core maps parameters from Current to Context field and back 30

Distributable Thread Path Example Scheduler upcalls are done at several points on path At creation of a new distributable thread At BSS, USS, ESS calls When a GIOP request is sent On receipt of GIOP request When GIOP reply is sent When GIOP reply is received At each upcall point, scheduling information is updated Additional interception points can (and sometimes should) be supported by the ORB and the scheduler/policy 1 BSSorSpawn 3 ESS USS Client IDL Stubs 4 7 2 Service Context in args Operation () outargs +returnvalue Dynamic Scheduler ORB Core Object (Servant) IDL Skeletons 6 Object Adapter 1. BSS - RTScheduling::Current::begin_scheduling_segment() or RTScheduling::Current::spawn() 2. USS - RTScheduling::Current::update_scheduling_segment() 3. ESS - RTScheduling::Current::end_scheduling_segment() 4. send_request() interceptor call. receive_request() interceptor call 6. send_reply() interceptor call 7. receive_reply() interceptor call 31

CORBA Distributable Threads BSS - A 2 - Way Invocation DT1 BSS - B 2 - Way Invocation BSS - C DT2 DT3 BSS - D BSS - E ESS - E ESS - B ESS - C ESS - B ESS - A With only 2-way CORBA invocations, distributable threads behave much like traditional OS threads Though they and their context can move from one endsystem to another Results in different resource scheduling domains being transited Distributable threads contend with OS threads and each other With locking, this can span endsystems, though scheduling is local 32 Host 1 Host 2 Host 3

Distributable Threads May Span Hosts Distributable Thread traversing multiple hosts with two-way invocations BSS - A DT1 2 - Way Invocation 2 - Way Invocation BSS - B ESS - B ESS - A Host 1 Host 2 Host 3 Interceptor Call 33

Creation of Distributable Threads DT1 spawn () BSS - A 1 - Way Invocation DT2 DT3 DT4 ESS - A Distributable threads can be created in three different ways An application thread calling BSS outside a distributable thread A distributable thread calling the spawn() method A distributable thread making an asynchronous (one-way) invocation The new distributable thread inherits default sched parameters 34 Host 1 Host 2 Host 3

Distributable Thread Creation, Cont. Distributable Thread making One-Way invocation New DT created implicitly With implicit scheduling parameters Distributable Thread Spawn New native thread created New DT created With implicit scheduling parameters BSS - A BSS - A 1 - Way Invocation DT1 spawn () DT1 DT2 DT2 ESS - A ESS - A Host 1 Host 2 Host 1 3

Thread Identity and Cancellation Issues Binding of a single DT to two different OS threads Host 1 RTCORBA 2.0 Scheduler DT DT carries scheduling parameters with it Host 2 RTCORBA 2.0 Scheduler <GUID, TID> Can cancel from either endsystem <GUID, TID> Other mechanisms affect real-time performance, too Managing identities of distributable and OS threads Configuring and using mechanisms sensitive to thread identity Supporting safe and efficient cancellation of thread execution Similar kinds of issues seen with RT Notification Service filters 36

Distributable Thread Cancellation BSS - A cancel DT Head of DT DT cancelled Propagate cancel Process the cancel at next scheduling point Host 1 Host 2 Host 3 Context: distributable thread can be cancelled to save cost Problem: only safe to cancel on endsystem in thread s call stack, and when thread is at a safe preemption point Solution: cancellation is invoked via cancel method on distributable thread instance, handled at next scheduling point 37

Distributable Thread Cancellation, Cont. DistributableThread:: cancel() cancels a DT Raises CORBA:: THREAD_CANCELLED exception at the next scheduling point Exception is propagated to the start of the DT but is not propagated to the head of the DT DT can be cancelled on any host that it currently spans local local interface interface RTScheduling::DistributableThread { // // raises raises CORBA::OBJECT_NOT_FOUND if if // // distributable distributable thread thread is is not not known known void void cancel(); cancel(); }; }; BSS - A DT cancelled Propagate cancel cancel DT Process the cancel at next scheduling point Head of DT 38 Host 1 Host 2 Host 3

Mapping Distributable Threads to OS Threads Objects Objects DT Skeleton POA Skeleton Skeleton POA Skeleton ORB ORB Network DT identity (UUID) vs. OS thread identity (tid) Mapping may be many-to-many and may evolve over time Need UUID aware concurrency and synchronization mechanisms ORB-level schedulers, but also lower-level mutexes, TSS, managers DT cancellation semantics depends on ORB-level concurrency I.e., reactive vs. cooperative vs. preemptive 39

Thread Specific Storage Example A distributable thread can use thread-specific storage Avoids locking of global data Context: OS provided TSS is efficient, uses OS thread id Problem: distributable thread may span OS threads Solution: TSS emulation based on <UUID,tid> pair Key question to answer What is the cost of TSS emulation compared to OS provided TSS? DT 1 tss_write OS Thread 1 OS Thread 1 OS Thread 2 tss_read DT 2 Host 1 Host 2 40

Preliminary TSS Emulation Benchmarks Pentium tick timestamps Nanosecond resolution on 2.8 GHz P4, 12KB cache, 12MB RAM RedHat 7.3, real-time class Called create repeatedly Then, called write/read repeatedly on one key Upper graph shows scalability of key creation Cost scales linearly with # of keys in OS, ACE TSS Emulation cost ~2usec more per key creation Lower graph shows that emulated TSS write costs ~1.usec more, emulated read costs ~.usec more Time (nsec) Time (nsec) 4000 300 3000 200 2000 100 1000 00 TSS Key Create: Emulated Native OS 0 1 1 101 11 201 21 301 31 401 41 01 3000 Number of Keys Created TSS Write/Read: Emulated Write Emulated Read Native OS Write 200 Native OS Read 2000 100 1000 00 41 0 1 101 201 301 401 01 601 701 801 901 1001