The request
GE Transportation, the division dedicated to railway signaling systems of the well-known multinational corporation, had the necessity to implement a complex scenario simulation system for safely testing railway equipment.
The simulator would have to run on more nodes (industrial PCs and/or on devices) with very strict requirements for simulation status synchronization (synchronization latencies of less than 10 ms).
Moreover, it was necessary for the simulator nodes to also work on Windows computers, and that the library could be used by C++, Python, and LISP.
Challenges faced
- Necessity to write strongly performance-oriented code still full of functionality
- Cross-platform library with Python and LISP bindings
Solutions implemented
- Used ZeroMQ as a transport protocol
- Used advanced techniques for lockless synchronization between threads
- Performance-oriented development approach
Requirements
- Simulate scenarios between multiple nodes
- Linux and Windows support
- Synchronization between nodes within 10ms
Develer’s contribution
- Used ZeroMQ as a transport
- Optimized systems by using C++, multithreading, and zero-copy techniques
- Binding from C++ to Python and LISP
Results
- Extremely low latencies in compliance with system requirements
- Cross-platform software
Advantages introduced
We used the ZeroMQ library to implement the transport protocol for synchronization between nodes. The publish/subscribe and request/reply mechanisms implemented by ZeroMQ proved to be very efficient. During the initial phase of architectural study, we made important optimizations by using a completely multithreaded approach with lock-less and zero-copy data synchronization.
The use of C++ also proved to be advantageous while writing the bindings since we could easily connect it to Python and LISP, the client’s preferred languages for writing the nodes at the application level.
Partner with us to overcome your IT challenges.
Advantages of our approach
We’ve chosen a performance-oriented approach: starting from a clean slate, we first worked to obtain the performance requirements for the easy situations, and then during development, each performance regression caused by new features was considered a block to overcome before moving on.
Advantages of open source
The ZeroMQ library was an important element which proved to be a perfect transport for the application in question, combining low latencies, a thread-safe architecture, and full portability between the Linux world and the Windows world.
Client
General Electric, multinational manufacturer of railway signaling systems
Staff
“The use of ZeroMQ and multithreading has allowed us to reach and maintain important performance targets regarding communication latency between the nodes right from the start.”