<p>Data stream processing (DSP) applications consist of data-flow graphs of operators that process data streams. These operators run as dedicated threads, either in parallel or concurrently, on computing platforms with multi-core CPUs. The decision of where to run threads of parallel programs, specifically which CPU core of the underlying architecture to use, is known as <i>thread pinning</i>, and it can significantly affect the application’s throughput. For DSP applications, finding an efficient pinning can be challenging as it depends on information about the data-flow structure, operator types, and communication patterns. Although thread pinning is a low-level optimization available in several parallel programming frameworks, DSP frameworks typically do not allow users to configure thread pinning, leaving the decision to the Operating System. This paper extends the <Emphasis FontCategory="SansSerif">WindFlow</Emphasis> DSP library, and its <Emphasis FontCategory="SansSerif">FastFlow</Emphasis>-based parallel runtime system, to expose thread pinning mechanisms through a usable API. The effectiveness of this approach is demonstrated through extensive evaluations of four applications, using six custom pinning strategies on a high-end server.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Enabling Pinning Strategies for Stream Processing Applications on Multicores

  • Lorenzo Bindi,
  • Salvatore D’Amico,
  • Gabriele Mencagli,
  • Massimo Torquati

摘要

Data stream processing (DSP) applications consist of data-flow graphs of operators that process data streams. These operators run as dedicated threads, either in parallel or concurrently, on computing platforms with multi-core CPUs. The decision of where to run threads of parallel programs, specifically which CPU core of the underlying architecture to use, is known as thread pinning, and it can significantly affect the application’s throughput. For DSP applications, finding an efficient pinning can be challenging as it depends on information about the data-flow structure, operator types, and communication patterns. Although thread pinning is a low-level optimization available in several parallel programming frameworks, DSP frameworks typically do not allow users to configure thread pinning, leaving the decision to the Operating System. This paper extends the WindFlow DSP library, and its FastFlow-based parallel runtime system, to expose thread pinning mechanisms through a usable API. The effectiveness of this approach is demonstrated through extensive evaluations of four applications, using six custom pinning strategies on a high-end server.