• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java IPC and the CLIP library
 

Java IPC and the CLIP library

on

  • 11,371 views

A talk on interprocess communications with the Java programming language. It also talks about the CLIP library which offers new IPC primitives and simplified access to existing primitives. This was ...

A talk on interprocess communications with the Java programming language. It also talks about the CLIP library which offers new IPC primitives and simplified access to existing primitives. This was given at the 3/3/2009 Denver Open Source Users Group

Statistics

Views

Total Views
11,371
Views on SlideShare
11,215
Embed Views
156

Actions

Likes
5
Downloads
64
Comments
0

9 Embeds 156

http://minhyungko.blogspot.kr 52
http://minhyungko.blogspot.com 48
http://www.slideshare.net 34
http://www.slashdocs.com 10
https://twitter.com 4
http://www.docshut.com 3
http://minhyungko.blogspot.jp 2
http://minhyungko.blogspot.co.uk 2
http://www.docseek.net 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java IPC and the CLIP library Java IPC and the CLIP library Presentation Transcript

    • Java IPC And the CLIP Library Clark N. Hobbie Long Term Software, LLC clark.hobbie@ltsllc.com
    • Who Gives a Damn?
    • You Should Care Because… • If you are in a corner • Java sync is one VM only • Others require JNI • Platform differences 3/3/2009 http://ltsllc.com/slides/ipc.html 3
    • What Are the Options? • Sockets • Message Queues • Semaphores • Shared Memory 3/3/2009 http://ltsllc.com/slides/ipc.html 4
    • Which Option Should I Use? Shared Memory • JRE support • Highest bandwidth • Decent synchronization • Naming support 3/3/2009 http://ltsllc.com/slides/ipc.html 5
    • Why Should I Care about CLIP? • New primitives – Semaphores – Message Queues • Simplifies existing primitives – Shared Memory 3/3/2009 http://ltsllc.com/slides/ipc.html 6
    • Java RandomAccessFile raf = new RandomAccessFile(quot;/temp/smfilequot;, quot;rwquot;); FileChannel chan = raf.getChannel(); MappedByteBuffer buf = chan.map(MapMode.READ_WRITE, 0, size); byte[] other = new byte[1024]; buf.position(0); buf.get(other, 0, 1024); 3/3/2009 http://ltsllc.com/slides/ipc.html 7
    • CLIP SharedMemory smem = new SharedMemory(quot;/temp/smfilequot;); 3/3/2009 http://ltsllc.com/slides/ipc.html 8
    • What is IPC? Inter-Process Communication (IPC) • Multiple processes • Naming • Synchronization • Bandwidth 3/3/2009 http://ltsllc.com/slides/ipc.html 9
    • Naming Me Tarzan, who you? 3/3/2009 http://ltsllc.com/slides/ipc.html 10
    • Naming How do you… • Connect processes together? • Determine who is allowed to connect? • Examples – TCP/IP? – Email? – Telephones? 3/3/2009 http://ltsllc.com/slides/ipc.html 11
    • File Naming Many IPC methods use the file system because • Visible to all processes • Has access control built in 3/3/2009 http://ltsllc.com/slides/ipc.html 12
    • File Naming Examples • Memory Mapped Files • Named Pipes/FIFOs 3/3/2009 http://ltsllc.com/slides/ipc.html 13
    • Synchronization • Event ordering • Mutual exclusion 3/3/2009 http://ltsllc.com/slides/ipc.html 14
    • Example: Online Purchase 1. Get user credit information 2. Decision purchase 3. Update credit information 3/3/2009 http://ltsllc.com/slides/ipc.html 15
    • Without Event Ordering Client A Client B 1 Get credit info 2 Get credit info 2 Decision purchase 3 Update info 4 Decision purchase 5 Update info 3/3/2009 http://ltsllc.com/slides/ipc.html 16
    • With Event Ordering Client A Client B 1 Get credit info 2 Wait for A 2 Decision purchase 3 Update info 4 Get credit info 5 Decision purchase 6 Update info 3/3/2009 http://ltsllc.com/slides/ipc.html 17
    • Synchronization is Event Ordering Instead of this order: We want this order: • A gets credit info • A gets credit info • B gets credit info • A decisions purchase • A decisions purchase • A updates info • A updates info • B gets credit info • B decisions purchase • B decisions purchase • B updates credit info • B updates credit info 3/3/2009 http://ltsllc.com/slides/ipc.html 18
    • Which Type of IPC is Appropriate? 3/3/2009 http://ltsllc.com/slides/ipc.html 19
    • IPC Types • Shared Memory • Semaphores • Sockets • Message Queues 3/3/2009 http://ltsllc.com/slides/ipc.html 20
    • Shared Memory 3/3/2009 http://ltsllc.com/slides/ipc.html 21
    • Shared Memory • Preferred approach • Any to any • get/put semantics • Synchronization support • JRE support • Naming support 3/3/2009 http://ltsllc.com/slides/ipc.html 22
    • Shared Memory Details • Synchronization – File Locking – Lock/unlock ~ 25 usec • Naming – File naming • Bandwidth – Synchronized 250MB/sec – Unsynchronized 1000MB/sec 3/3/2009 http://ltsllc.com/slides/ipc.html 23
    • Memory Mapped Files • Start with a file – Appears the same to everyone – Reads/writes appear to everyone • Now speed it up – Until its as fast as memory – Like having the OS buffer 3/3/2009 http://ltsllc.com/slides/ipc.html 24
    • Why Dear God, Why?!! • Originally Unix – Where everything is a file – mmap system call – CreateFileMapping system call • Solves the naming problem • Solves the access problem 3/3/2009 http://ltsllc.com/slides/ipc.html 25
    • Example: World of Warcraft! Shared Memory! 3/3/2009 http://ltsllc.com/slides/ipc.html 26
    • WoW: Requirements • One client process per player • One server process for all • Server periodically reads all orders • Server issues results 3/3/2009 http://ltsllc.com/slides/ipc.html 27
    • WoW: Design Client Orders (EvilOne) Player Order EvilOne kill Client Lancelot kill (Lancelot) Client Martha Stewart kill (Conan) Conan make cookies … Client (Martha) 3/3/2009 http://ltsllc.com/slides/ipc.html 28
    • WoW: Design Results Orders Server Process Player Result Player Order EvilOne dead EvilOne kill Lancelot Lancelot dead kill Martha Stewart Martha Stewart dead kill Conan overweight Conan make cookies … … 3/3/2009 http://ltsllc.com/slides/ipc.html 29
    • Shared Memory: Summary • Preferred IPC • 250 to 1000MB/sec • File naming • Synchronization through file locking • JRE support 3/3/2009 http://ltsllc.com/slides/ipc.html 30
    • Sockets 3/3/2009 http://ltsllc.com/slides/ipc.html 31
    • Sockets • TCP/IP • Point to point • Stream oriented • Client/Server • Synchronized • Java support • Naming support 3/3/2009 http://ltsllc.com/slides/ipc.html 32
    • Sockets Details • Naming – 127.0.0.1 port 7777 • Synchronization – Accept, read, write – 70 usec • Bandwidth – 15 MB/sec 3/3/2009 http://ltsllc.com/slides/ipc.html 33
    • Sockets: CLIP • Some utility classes – ThreadedSocketServer • JRE already has excellent support 3/3/2009 http://ltsllc.com/slides/ipc.html 34
    • Example: Google Maps Copyright © Google 3/3/2009 http://ltsllc.com/slides/ipc.html 35
    • GMaps Combining Data Streets Image Overlay Images are Copyright © www.Google.com 3/3/2009 http://ltsllc.com/slides/ipc.html 36
    • GMaps: Requirements • C legacy code • One instance/process • Receive file name • Process for 1 to 10 sec • Respond with new file name 3/3/2009 http://ltsllc.com/slides/ipc.html 37
    • GMaps: Design Worker Pool Server Process Java VM Client Client Client Client Client Client Client Client Client Client Client Worker Thread Process TCP/IP 3/3/2009 http://ltsllc.com/slides/ipc.html 38
    • Sockets vs Shared Memory • Faster synchronization – 25 usec vs. 70 usec • More bandwidth – 250 MB/sec vs. 15 MB/sec 3/3/2009 http://ltsllc.com/slides/ipc.html 39
    • Message Queues 3/3/2009 http://ltsllc.com/slides/ipc.html 40
    • Message Queues • Point to point • Message or stream • Client/Server • Synchronization support • No Java Support • No naming support 3/3/2009 http://ltsllc.com/slides/ipc.html 41
    • Message Queue Details • Synchronization – Accept, read, write – 25 usec • Bandwidth – 167 MB/sec 3/3/2009 http://ltsllc.com/slides/ipc.html 42
    • Platform Differences • Direction – Linux is one-way – Windows is two-way • Naming – Linux: any – Windows: must be .pipename • Misc – Windows pipes are networkable 3/3/2009 http://ltsllc.com/slides/ipc.html 43
    • Message Queues: CLIP • MessageQueue class • One direction • File naming • JNI under the hood 3/3/2009 http://ltsllc.com/slides/ipc.html 44
    • Message Queues vs. Shared Memory • Less bandwidth – Synchronized: 250MB vs. 167MB – Unsynchronized: 1000MB vs. 167MB • No Java support • Platform differences 3/3/2009 http://ltsllc.com/slides/ipc.html 45
    • Semaphores 3/3/2009 http://ltsllc.com/slides/ipc.html 46
    • Semaphores • Synchronization only • Any to any • Access via increment/decrement • No Java support • No naming support 3/3/2009 http://ltsllc.com/slides/ipc.html 47
    • Semaphore Details • Integer value • Decrement reserves – Blocks if the value is 0 or less • Increment releases – May wake a blocked process • N-ary semaphores – Values other than 0 or 1 3/3/2009 http://ltsllc.com/slides/ipc.html 48
    • Semaphore Details • Synchronization – 25 usec • Platform naming differences – Linux: /somename – Windows: somename – Ad hoc access control 3/3/2009 http://ltsllc.com/slides/ipc.html 49
    • Semaphores CLIP • Semaphore class • File system naming • JNI under the hood 3/3/2009 http://ltsllc.com/slides/ipc.html 50
    • Example: The Liminator 3/3/2009 http://ltsllc.com/slides/ipc.html 51
    • The Liminator: Requirements • Start with Google Maps • Too many processes == poor performance • Limit processes with a semaphore – Initial value = max number of processes – Reserve when trying to spawn – Release when complete 3/3/2009 http://ltsllc.com/slides/ipc.html 52
    • Liminator: Design Semaphore Client Client Client Client Client Client Client Client Client Client Client Client Running Waiting 3/3/2009 http://ltsllc.com/slides/ipc.html 53
    • Semaphores vs Shared Memory • About the same speed • No naming support • No JRE support 3/3/2009 http://ltsllc.com/slides/ipc.html 54
    • Summary 3/3/2009 http://ltsllc.com/slides/ipc.html 55
    • Summary • IPC – Multiple processes – Naming – Bandwidth • CLIP – Open source Linux & Windows – New primitives via JNI – Simplify others 3/3/2009 http://ltsllc.com/slides/ipc.html 56
    • Summary of IPC Types IPC Type Sync Band Java Support? Semaphores 25 usec N/A No Sockets 70 usec 15MB Yes Message Queues 25 usec 167MB No Shared Memory 25 usec 250MB Yes 3/3/2009 http://ltsllc.com/slides/ipc.html 57
    • Resources Slides & code ltsllc.com/talks/ipc Windows msdn.microsoft.com Linux Advanced UNIX Programming basepath.com/aup/index.htm Java JTUX basepath.com/aup/jtux Sun Forums java.sun.com Code Project codeproject.com 3/3/2009 http://ltsllc.com/slides/ipc.html 58
    • The End 3/3/2009 http://ltsllc.com/slides/ipc.html 59
    • Which Option is Best? No Shared Sync? Memory Yes Yes Yes Yes Data? > 10MB/s? 1-to-1? No No No Shared Message Semaphores Sockets Memory* Queues 3/3/2009 http://ltsllc.com/slides/ipc.html 60