TY - GEN
T1 - Dynamic expressivity with static optimization for streaming languages
AU - Soulé, Robert
AU - Gordon, Michael I.
AU - Amarasinghe, Saman
AU - Grimm, Robert
AU - Hirzel, Martin
PY - 2013
Y1 - 2013
N2 - Developers increasingly use streaming languages to write applications that process large volumes of data with high throughput. Unfortunately, when picking which streaming language to use, they face a difficult choice. On the one hand, dynamically scheduled languages allow developers to write a wider range of applications, but cannot take advantage of many crucial optimizations. On the other hand, statically scheduled languages are extremely performant, but have difficulty expressing many important streaming applications. This paper presents the design of a hybrid scheduler for stream processing languages. The compiler partitions the streaming application into coarse-grained subgraphs separated by dynamic rate boundaries. It then applies static optimizations to those subgraphs. We have implemented this scheduler as an extension to the Streamlt compiler. To evaluate its performance, we compare it to three scheduling techniques used by dynamic systems (OS thread, demand, and no-op) on a combination of micro-benchmarks and real-world inspired synthetic benchmarks. Our scheduler not only allows the previously static version of Streamlt to run dynamic rate applications, but it outperforms the three dynamic alternatives. This demonstrates that our scheduler strikes the right balance between expressivity and performance for stream processing languages.
AB - Developers increasingly use streaming languages to write applications that process large volumes of data with high throughput. Unfortunately, when picking which streaming language to use, they face a difficult choice. On the one hand, dynamically scheduled languages allow developers to write a wider range of applications, but cannot take advantage of many crucial optimizations. On the other hand, statically scheduled languages are extremely performant, but have difficulty expressing many important streaming applications. This paper presents the design of a hybrid scheduler for stream processing languages. The compiler partitions the streaming application into coarse-grained subgraphs separated by dynamic rate boundaries. It then applies static optimizations to those subgraphs. We have implemented this scheduler as an extension to the Streamlt compiler. To evaluate its performance, we compare it to three scheduling techniques used by dynamic systems (OS thread, demand, and no-op) on a combination of micro-benchmarks and real-world inspired synthetic benchmarks. Our scheduler not only allows the previously static version of Streamlt to run dynamic rate applications, but it outperforms the three dynamic alternatives. This demonstrates that our scheduler strikes the right balance between expressivity and performance for stream processing languages.
KW - Stream processing
KW - Streamlt
UR - http://www.scopus.com/inward/record.url?scp=84881181133&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84881181133&partnerID=8YFLogxK
U2 - 10.1145/2488222.2488255
DO - 10.1145/2488222.2488255
M3 - Conference contribution
AN - SCOPUS:84881181133
SN - 9781450317580
T3 - DEBS 2013 - Proceedings of the 7th ACM International Conference on Distributed Event-Based Systems
SP - 159
EP - 170
BT - DEBS 2013 - Proceedings of the 7th ACM International Conference on Distributed Event-Based Systems
T2 - 7th ACM International Conference on Distributed Event-Based Systems, DEBS 2013
Y2 - 29 June 2013 through 3 July 2013
ER -