Java IPC and the CLIP library

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite & 1 Group

    Java IPC and the CLIP library - Presentation Transcript

    1. Java IPC And the CLIP Library Clark N. Hobbie Long Term Software, LLC clark.hobbie@ltsllc.com
    2. Who Gives a Damn?
    3. 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
    4. What Are the Options? • Sockets • Message Queues • Semaphores • Shared Memory 3/3/2009 http://ltsllc.com/slides/ipc.html 4
    5. 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
    6. 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
    7. Java RandomAccessFile raf = new RandomAccessFile(\"/temp/smfile\", \"rw\"); 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
    8. CLIP SharedMemory smem = new SharedMemory(\"/temp/smfile\"); 3/3/2009 http://ltsllc.com/slides/ipc.html 8
    9. What is IPC? Inter-Process Communication (IPC) • Multiple processes • Naming • Synchronization • Bandwidth 3/3/2009 http://ltsllc.com/slides/ipc.html 9
    10. Naming Me Tarzan, who you? 3/3/2009 http://ltsllc.com/slides/ipc.html 10
    11. 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
    12. 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
    13. File Naming Examples • Memory Mapped Files • Named Pipes/FIFOs 3/3/2009 http://ltsllc.com/slides/ipc.html 13
    14. Synchronization • Event ordering • Mutual exclusion 3/3/2009 http://ltsllc.com/slides/ipc.html 14
    15. 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
    16. 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
    17. 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
    18. 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
    19. Which Type of IPC is Appropriate? 3/3/2009 http://ltsllc.com/slides/ipc.html 19
    20. IPC Types • Shared Memory • Semaphores • Sockets • Message Queues 3/3/2009 http://ltsllc.com/slides/ipc.html 20
    21. Shared Memory 3/3/2009 http://ltsllc.com/slides/ipc.html 21
    22. 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
    23. 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
    24. 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
    25. 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
    26. Example: World of Warcraft! Shared Memory! 3/3/2009 http://ltsllc.com/slides/ipc.html 26
    27. 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
    28. 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
    29. 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
    30. 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
    31. Sockets 3/3/2009 http://ltsllc.com/slides/ipc.html 31
    32. 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
    33. 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
    34. Sockets: CLIP • Some utility classes – ThreadedSocketServer • JRE already has excellent support 3/3/2009 http://ltsllc.com/slides/ipc.html 34
    35. Example: Google Maps Copyright © Google 3/3/2009 http://ltsllc.com/slides/ipc.html 35
    36. GMaps Combining Data Streets Image Overlay Images are Copyright © www.Google.com 3/3/2009 http://ltsllc.com/slides/ipc.html 36
    37. 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
    38. 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
    39. 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
    40. Message Queues 3/3/2009 http://ltsllc.com/slides/ipc.html 40
    41. 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
    42. Message Queue Details • Synchronization – Accept, read, write – 25 usec • Bandwidth – 167 MB/sec 3/3/2009 http://ltsllc.com/slides/ipc.html 42
    43. Platform Differences • Direction – Linux is one-way – Windows is two-way • Naming – Linux: any – Windows: must be \\\\.\\pipe\\name • Misc – Windows pipes are networkable 3/3/2009 http://ltsllc.com/slides/ipc.html 43
    44. Message Queues: CLIP • MessageQueue class • One direction • File naming • JNI under the hood 3/3/2009 http://ltsllc.com/slides/ipc.html 44
    45. 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
    46. Semaphores 3/3/2009 http://ltsllc.com/slides/ipc.html 46
    47. 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
    48. 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
    49. 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
    50. Semaphores CLIP • Semaphore class • File system naming • JNI under the hood 3/3/2009 http://ltsllc.com/slides/ipc.html 50
    51. Example: The Liminator 3/3/2009 http://ltsllc.com/slides/ipc.html 51
    52. 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
    53. 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
    54. Semaphores vs Shared Memory • About the same speed • No naming support • No JRE support 3/3/2009 http://ltsllc.com/slides/ipc.html 54
    55. Summary 3/3/2009 http://ltsllc.com/slides/ipc.html 55
    56. 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
    57. 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
    58. 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
    59. The End 3/3/2009 http://ltsllc.com/slides/ipc.html 59
    60. 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

    + ltsllcltsllc, 8 months ago

    custom

    2308 views, 1 favs, 0 embeds more stats

    A talk on interprocess communications with the Java more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2308
      • 2308 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 11
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories