300 likes | 419 Views
MICO Architecture & Applications. Talk Overview. Past, present, and future Development and use Book projects, Workshops CORBA Branding Architecture Micro-kernel based approach Application Zero-Copy CORBA for high bandwidth applications in clusters of PCs. Overview. MICO Overview.
E N D
Talk Overview • Past, present, and future • Development and use • Book projects, Workshops • CORBA Branding • Architecture • Micro-kernel based approach • Application • Zero-Copy CORBA for high bandwidth applications in clusters of PCs Overview
MICO Overview • MICO = Mini CORBA (inspired by Minix) • MICO = MICO Is CORBA (inspired by GNU) • Open Source CORBA implementation • 1996: kick off as research/teaching project • 1997: first public version • 1998: binary distribution • 1999: branded by OpenGroup • 2000: text book • 2001: 2nd MICO Workshop • Currently working towards CORBA 3 (e.g., component model), security (MICOSec) MICO Past, Present, Future
MICO Devel & Use • 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 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) MICO Past, Present, Future
MICO Workshops • 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) MICO Past, Present, Future
CORBA Branding • 1999: MICO branded as CORBA 2.1 compliant by OpenGroup • Test suite developed by ApTest (Ireland) • Rather buggy, MICO as a test case MICO Past, Present, Future interoperability Appl Appl portability ORB ORB
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
Talk Overview • Past, present, and future • Development and use • Book projects, Workshops • CORBA Branding • Architecture • Micro-kernel based approach • Application • Zero-Copy CORBA for high bandwidth applications in clusters of PCs Overview
Architecture • Initial goal: provide middleware platform for middleware research and teaching • 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 MICO Architecture
Architecture cont. • 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) MICO Architecture
Micro Kernel Approach • Minimize ORBfunctionality • Move functionality to • Servers (separateprocess) • Runtime libraries(same process) • Extensibility: adding, removing, exchanging servers and libraries without touching ORB Micro Kernel Approach
ORB Functionality • Local request processing • Select appropriate object adapter • Keep track of pending invocations • Task scheduling • Coordinate concurrent ORB tasks ORB Functionality
ORB Request Processing 1. Invocation adapter interface 2. Active invocation table 3. Object adapter registry 4. Object adapter interface Request Processing
Colocated Client & Server • DII: initiates method invocation • POA: executes method on object implementation Request Processing
Separated Client & Server • IIOP Client: transforms method invocation into network message • IIOP Server: transforms message into method invocation Request Processing
Server Activation • Mediator: looks up or runs appropriate server and forwards method invocation Request Processing
ORB Task Scheduling • Tasks: • Application can be caller and callee at the same time (distributedcallbacks, nested method invocations) • Process incoming and outgoing messages on multiple communication channels • Requirements: • Multithreading optional (e.g., Palm OS) Task Scheduling
Event Based Scheduler • Split task into nonblocking segments • Blocking operation at start of each segment • E.g., wait for data from network, timeout, or condition („events“) • Register segmentswith scheduler • Executes segmentwhen blockingoperation completes • Non-preemptive Task Scheduling
Evaluation • CORBA suggests a modular design: • 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 Evaluation
Evaluation cont. • Often easy to adopt MICO to changes in the CORBA specification • Due to micro-kernel approach • Advent of the POA • 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 Evaluation
Talk Overview • Past, present, and future • Development and use • Book projects, Workshops • CORBA Branding • Architecture • Micro-kernel based approach • Application • Zero-Copy CORBA for high bandwidth applications in clusters of PCs Overview
Zero-Copy CORBA • Clusters of Personal Computers (CoPs) equipped with Gigabit Ethernet • 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 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 Zero-Copy CORBA
foo(arg1, arg2) foo(arg1, arg2) GIOP H GIOP H GIOP H H GIOP H H DMA DMA Data Copies ORB Zero-Copy CORBA TCP/IP NIC
4k (page) 1460 1480 1156 NIC Driver / Network • 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) • Solution • Driver pretends MTU of 4k • (De)fragments page (3 packets)using fast DMA to/from NIC • Uses speculative techniques to defragment without copies; makes the common case fast Zero-Copy CORBA
Header Frag 1 Frag 2 Frag 3 H H TCP/IP • NIC driver handles whole memory pages • Page remapping instead of copying • TCP/IP headers are kept separate from payload • Scatter/gather lists (DMA descriptors) Zero-Copy CORBA 4k
GIOP Data 1 Data 2 CORBA ORB • In heterogeneous CoPs no need to marshal data structures • Transmit memory image of large data structures with zero copies • Separate control from data transfer • References instead of embedded data in GIOP messages Zero-Copy CORBA
Data source Parallel Encoder Distributor Integrator MPEG Transcoder • Maximum bulk transfer rate: 75 Mbyte/s (instead of 42 Mbyte/s) • Example app: parallel transcoding of MPEG streams Zero-Copy CORBA
Summary • Started off as research/teaching project • Book projects, Workshops • Developed into full-fledged CORBA implementation • 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 Summary