Analysis of event processing design patterns and their performance dependency on i/o notification mechanisms

  • Authors:
  • Ronald Strebelow;Christian Prehofer

  • Affiliations:
  • Institute for Communication Systems ESK, Fraunhofer, Munich, Germany;Institute for Communication Systems ESK, Fraunhofer, Munich, Germany

  • Venue:
  • MSEPT'12 Proceedings of the 2012 international conference on Multicore Software Engineering, Performance, and Tools
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.