当前位置: X-MOL 学术Automat. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Self-adaptive concurrent components
Automated Software Engineering ( IF 3.4 ) Pub Date : 2017-08-22 , DOI: 10.1007/s10515-017-0219-0
Erik Österlund , Welf Löwe

Selecting the optimum component implementation variant is sometimes difficult since it depends on the component’s usage context at runtime, e.g., on the concurrency level of the application using the component, call sequences to the component, actual parameters, the hardware available etc. A conservative selection of implementation variants leads to suboptimal performance, e.g., if a component is conservatively implemented as thread-safe while during the actual execution it is only accessed from a single thread. In general, an optimal component implementation variant cannot be determined before runtime and a single optimal variant might not even exist since the usage contexts can change significantly over the runtime. We introduce self-adaptive concurrent components that automatically and dynamically change not only their internal representation and operation implementation variants but also their synchronization mechanism based on a possibly changing usage context. The most suitable variant is selected at runtime rather than at compile time. The decision is revised if the usage context changes, e.g., if a single-threaded context changes to a highly contended concurrent context. As a consequence, programmers can focus on the semantics of their systems and, e.g., conservatively use thread-safe components to ensure consistency of their data, while deferring implementation and optimization decisions to context-aware runtime optimizations. We demonstrate the effect on performance with self-adaptive concurrent queues, sets, and ordered sets. In all three cases, experimental evaluation shows close to optimal performance regardless of actual contention.

中文翻译:

自适应并发组件

选择最佳的组件实现变体有时很困难,因为它取决于运行时组件的使用上下文,例如,使用组件的应用程序的并发级别、组件的调用序列、实际参数、可用的硬件等。 保守的选择的实现变体导致次优性能,例如,如果一个组件被保守地实现为线程安全的,而在实际执行期间它只能从单个线程访问。通常,在运行时之前无法确定最佳组件实现变体,甚至可能不存在单个最佳变体,因为使用上下文可能会在运行时发生显着变化。我们引入了自适应并发组件,这些组件不仅可以自动和动态地更改其内部表示和操作实现变体,还可以根据可能更改的使用上下文自动和动态地更改它们的同步机制。在运行时而不是在编译时选择最合适的变体。如果使用上下文改变,例如,如果单线程上下文改变为高度竞争的并发上下文,则修改该决定。因此,程序员可以专注于他们系统的语义,例如,保守地使用线程安全组件来确保其数据的一致性,同时将实现和优化决策推迟到上下文感知运行时优化。我们展示了自适应并发队列、集合和有序集合对性能的影响。在所有三种情况下,
更新日期:2017-08-22
down
wechat
bug