Evaluating and Optimizing Thread Pool Strategies for Real-Time CORBA
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Applying Patterns to Improve the Performance of Fault Tolerant CORBA
HiPC '00 Proceedings of the 7th International Conference on High Performance Computing
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
An evaluation of network stack parallelization strategies in modern operating systems
ATEC '06 Proceedings of the annual conference on USENIX '06 Annual Technical Conference
Analysis of Architecture Pattern Usage in Legacy System Architecture Documentation
WICSA '08 Proceedings of the Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008)
Real-Time Performance and Middleware for Multiprocessor and Multicore Linux Platforms
RTCSA '09 Proceedings of the 2009 15th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications
Scalable i/o event handling for GHC
Proceedings of the third ACM Haskell symposium on Haskell
Hi-index | 0.00 |
Software design patterns reflect software engineering practices and experience by documenting proven design solutions. We consider here two widely used patterns, the Half-Sync/Half-Async and the Leader/Followers pattern, which aim for efficient processing of messages in multi-core environments. We will analyze the performance differences not only between both design patterns but also between different implementation variants. These variants use different event notification mechanisms which are used to sense message arrivals on a set of connections. We will show that performance depends not simply on data sharing or lock contention but on the selected event notification primitives and their specific characteristics. In more detail, we evaluated both patterns in terms of three different event notification mechanisms: select, level-triggered and edge-triggered epoll. The latter two are the operation modes of the epoll API. In particular, the right choice of the API can influence the performance by a factor of two. Secondly, the more recent epoll is overall faster, but in some aspects slower which strongly degrades the Half-Sync/Half-Async performance. Existing performance evaluations for these patterns do not analyze their multi-core performance. Furthermore, they do not include analysis of bottlenecks, data sharing, or operating system primitives.