Transcript Document
CORBA Controls Workshop
MICO
Architecture & Applications
Kay Römer
ETH Zürich
Switzerland
Talk Overview
Past, present, and future
– Development and use
– Book projects, Workshops
– CORBA Branding
Architecture
Overview
– Micro-kernel based approach
Application
– Zero-Copy CORBA for high bandwidth
applications in clusters of PCs
2
MICO Past, Present, Future
MICO Overview
MICO = Mini CORBA (inspired by Minix)
MICO = MICO Is CORBA (inspired by GNU)
Open Source CORBA implementation
–
–
–
–
–
–
1996:
1997:
1998:
1999:
2000:
2001:
kick off as research/teaching project
first public version
binary distribution
branded by OpenGroup
text book
2nd MICO Workshop
Currently working towards CORBA 3 (e.g.,
component model), security (MICOSec)
3
MICO Devel & Use
MICO Past, Present, Future
Distributed development
– CVS repository, write access by 5 maintainers
– Mailing lists with ~1500 subscribers
– Major code contributions from 20 programmers
world wide
Industrial applications
– E.g., The Weather Channel, Lufthansa Systems
Teaching
– E.g., Lectures and Courses at ETH Zurich, U
Frankfurt, TU Darmstadt, U Stuttgart, San
Francisco State University
Research
– E.g., Zero-Copy CORBA, QoS support for CORBA
4
MICO Past, Present, Future
MICO Books
Foundation for lectures and CORBA
courses
1998: binary distribution @ MKP
– Binaries for Windows and several Unix
platforms, tutorial, documentation
2000: text book in German @ dpunkt
– Dual (user and system) view on CORBA
middleware
2003: merger of text book and
distribution @ MKP (planned)
5
MICO Workshops
MICO Past, Present, Future
Forum for MICO users and developers
– 1 day, invited talks
– 50-100 participants
1998: 1st Intl. Workshop @ Darmstadt
2001: 2nd Intl. Workshop @ Stanford
2003: 3rd Intl. Workshop @ San
Francisco (planned)
6
1999: MICO branded as CORBA 2.1
compliant by OpenGroup
– Test suite developed by ApTest (Ireland)
– Rather buggy, MICO as a test case
Appl
interoperability
MICO Past, Present, Future
CORBA Branding
Appl
portability
ORB
ORB
7
CORBA Branding cont.
Tests
–
–
–
–
–
Local function syntax (interface)
Local function semantics (implementations)
IDL Compiler (c++ language mapping)
Interface Repository
IIOP
Open issues
– Test services?
– Coverage?
– Any better than simple empirical test?
Ongoing (?) work at OMG and GMD Fokus to
improve branding and develop Open Source
test suite
8
Talk Overview
Past, present, and future
– Development and use
– Book projects, Workshops
– CORBA Branding
Architecture
Overview
– Micro-kernel based approach
Application
– Zero-Copy CORBA for high bandwidth
applications in clusters of PCs
9
Architecture
Initial goal: provide middleware platform for
middleware research and teaching
MICO Architecture
– Similar to Minix (Mini Unix) in the operating
system domain
Requirement: easy to understand, modify,
and extend
–
–
–
–
Clear, modular structure
Simple, well understood interfaces
Keep it simple
Do not rely on complex tools
10
Architecture cont.
MICO Architecture
Turns out that requirements help keep
up with evolution of CORBA
New CORBA application domains
– Embedded systems
– Nomadic systems
– ...
Evolving CORBA standard
– New object adapters (e.g., POA)
– New interoperability protocols (e.g.,
SOAP)
11
Micro Kernel Approach
Micro Kernel Approach
Minimize ORB
functionality
Move functionality to
– Servers (separate
process)
– Runtime libraries
(same process)
Extensibility: adding, removing,
exchanging servers and libraries
without touching ORB
12
ORB Functionality
Local request processing
ORB Functionality
– Select appropriate object adapter
– Keep track of pending invocations
Task scheduling
– Coordinate concurrent ORB tasks
13
Request Processing
ORB Request Processing
1. Invocation adapter interface
2. Active invocation table
3. Object adapter registry
4. Object adapter interface
14
Request Processing
Colocated Client & Server
DII: initiates method invocation
POA: executes method on object
implementation
15
Request Processing
Separated Client & Server
IIOP Client: transforms method
invocation into network message
IIOP Server: transforms message into
method invocation
16
Request Processing
Server Activation
Mediator: looks up or runs appropriate
server and forwards method invocation
17
ORB Task Scheduling
Task Scheduling
Tasks:
– Application can be caller and callee at the
same time (distributed callbacks, nested
method invocations)
– Process incoming and outgoing messages
on multiple communication channels
Requirements:
– Multithreading optional (e.g., Palm OS)
18
Event Based Scheduler
Split task into nonblocking segments
Task Scheduling
– Blocking operation at start of each segment
– E.g., wait for data from network, timeout,
or condition („events“)
Register segments
with scheduler
– Executes segment
when blocking
operation completes
Non-preemptive
19
Evaluation
CORBA suggests a modular design:
Evaluation
–
–
–
–
Invocation interfaces
Skeleton interfaces
ORB core
Object adapters
Most implementations melt this
modular design into a monolithic
implementation
– Changes in CORBA spec often require
major ORB changes
20
Evaluation cont.
Often easy to adopt MICO to changes in
the CORBA specification
– Due to micro-kernel approach
Advent of the POA
Evaluation
– BOA untouched
– BOA and POA coexist, even in one
application
New interoperability protocols (SOAP)
– Easy to introduce new interop protocols,
even non-GIOP-based ones
21
Talk Overview
Past, present, and future
– Development and use
– Book projects, Workshops
– CORBA Branding
Architecture
Overview
– Micro-kernel based approach
Application
– Zero-Copy CORBA for high bandwidth
applications in clusters of PCs
22
Zero-Copy CORBA
Clusters of Personal Computers (CoPs)
equipped with Gigabit Ethernet
Zero-Copy CORBA
– Best performance, lowest price
Many multimedia apps require fast bulk data
transfer
Poor memory subsystem limits overall
communication bandwidth
– Data copies slow things down
Aim: improve end-to-end performance of bulk
data transfers
Christian Kurmann´s PhD project at ETH Zurich
23
Zero-Copy CORBA
Performance Limits
Pentium II 400MHz, Intel 440BX chipset,
Gigabit Ethernet
Network: 125 Mbyte/s
33 MHz PCI: 126 Mbyte/s
Memory copy: 92 Mbyte/s
– Memory bandwidth < network bandwidth
Linux-2.2 measurement: 42 Mbyte/s
Therefore: eliminate data copies at all
layers
24
ORB
Data Copies
foo(arg1, arg2)
foo(arg1, arg2)
H
TCP/IP
H GIOP
GIOP
H
H GIOP
H
H
DMA
DMA
25
NIC
Zero-Copy CORBA
GIOP
NIC Driver / Network
Zero-Copy CORBA
Problem: limited Ethernet packet size (MTU)
of 1500 bytes
– Sender fragments data stream into sequence of
small packets
– Receiver has to reassemble stream
– Requires data copies since MTU
< memory page size (4k)
4k (page)
Solution
– Driver pretends MTU of 4k
– (De)fragments page (3 packets) 1460
1480
using fast DMA to/from NIC
– Uses speculative techniques to defragment
without copies; makes the common case fast
26
1156
TCP/IP
NIC driver handles whole memory pages
– Page remapping instead of copying
Zero-Copy CORBA
TCP/IP headers are kept separate from
payload
– Scatter/gather lists (DMA descriptors)
4k
Header
Frag 1
H
H
27
Frag 2
Frag 3
CORBA ORB
In heterogeneous CoPs no need to
marshal data structures
Zero-Copy CORBA
– Transmit memory image of large data
structures with zero copies
Separate control from data transfer
– References instead of embedded data in
GIOP messages
GIOP
Data 1
Data 2
28
MPEG Transcoder
Zero-Copy CORBA
Maximum bulk transfer rate: 75
Mbyte/s (instead of 42 Mbyte/s)
Example app: parallel transcoding of
MPEG streams
Data
source
Distributor
Parallel
Encoder
29
Integrator
Summary
Started off as research/teaching project
– Book projects, Workshops
Developed into full-fledged CORBA
implementation
Summary
– With help from the Open Source community
– Goal: keep pace with CORBA standard
Micro-kernel based architecture
Application: high bandwidth applications
in clusters of PCs
www.mico.org
30