SlideShare a Scribd company logo
1 of 60
Download to read offline
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

More Related Content

Similar to Java IPC and the CLIP library

Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesMaxwell Dayvson Da Silva
 
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...Jean-Philippe BEMPEL
 
DEFCON 23 - Etienne Martineau - inter vm data exfiltration
DEFCON 23 - Etienne Martineau - inter vm data exfiltrationDEFCON 23 - Etienne Martineau - inter vm data exfiltration
DEFCON 23 - Etienne Martineau - inter vm data exfiltrationFelipe Prado
 
Capture-HPC talk@ OSDC.tw 2009
Capture-HPC talk@ OSDC.tw 2009Capture-HPC talk@ OSDC.tw 2009
Capture-HPC talk@ OSDC.tw 2009Da-Chang Guan
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Clusterguestd34230
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlJohn Paulett
 
FPC for the Masses - CoRIIN 2018
FPC for the Masses - CoRIIN 2018FPC for the Masses - CoRIIN 2018
FPC for the Masses - CoRIIN 2018Xavier Mertens
 
Rhonda Layfield Sniffing Your Network With Netmon 3.3
Rhonda Layfield   Sniffing Your Network With Netmon 3.3Rhonda Layfield   Sniffing Your Network With Netmon 3.3
Rhonda Layfield Sniffing Your Network With Netmon 3.3Nathan Winters
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharingJames Hsieh
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesFlávio Ribeiro
 
Kbk436 Sistem Operasi Lanjut Lecture01
Kbk436 Sistem Operasi Lanjut Lecture01Kbk436 Sistem Operasi Lanjut Lecture01
Kbk436 Sistem Operasi Lanjut Lecture01Cahyo Darujati
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspectiveshwetank
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAtlassian
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAtlassian
 
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesOSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesNETWAYS
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
 
Varnish http accelerator
Varnish http acceleratorVarnish http accelerator
Varnish http acceleratorno no
 
Mcas log collector deck
Mcas log collector deckMcas log collector deck
Mcas log collector deckMatt Soseman
 

Similar to Java IPC and the CLIP library (20)

re7jweiss
re7jweissre7jweiss
re7jweiss
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...
Devoxx Fr 2022 - Remèdes aux oomkill, warm-ups, et lenteurs pour des conteneu...
 
DEFCON 23 - Etienne Martineau - inter vm data exfiltration
DEFCON 23 - Etienne Martineau - inter vm data exfiltrationDEFCON 23 - Etienne Martineau - inter vm data exfiltration
DEFCON 23 - Etienne Martineau - inter vm data exfiltration
 
Capture-HPC talk@ OSDC.tw 2009
Capture-HPC talk@ OSDC.tw 2009Capture-HPC talk@ OSDC.tw 2009
Capture-HPC talk@ OSDC.tw 2009
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Cluster
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version Control
 
FPC for the Masses - CoRIIN 2018
FPC for the Masses - CoRIIN 2018FPC for the Masses - CoRIIN 2018
FPC for the Masses - CoRIIN 2018
 
Rhonda Layfield Sniffing Your Network With Netmon 3.3
Rhonda Layfield   Sniffing Your Network With Netmon 3.3Rhonda Layfield   Sniffing Your Network With Netmon 3.3
Rhonda Layfield Sniffing Your Network With Netmon 3.3
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharing
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
Kbk436 Sistem Operasi Lanjut Lecture01
Kbk436 Sistem Operasi Lanjut Lecture01Kbk436 Sistem Operasi Lanjut Lecture01
Kbk436 Sistem Operasi Lanjut Lecture01
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspective
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA Hum
 
Administrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA HumAdministrivia: Golden Tips for Making JIRA Hum
Administrivia: Golden Tips for Making JIRA Hum
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesOSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
Varnish http accelerator
Varnish http acceleratorVarnish http accelerator
Varnish http accelerator
 
Mcas log collector deck
Mcas log collector deckMcas log collector deck
Mcas log collector deck
 

Recently uploaded

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

Java IPC and the CLIP library

  • 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(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
  • 8. CLIP SharedMemory smem = new SharedMemory(quot;/temp/smfilequot;); 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 .pipename • 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