Modern programming languages, such as Rust, have adopted the coroutine concept to better utilize computation resources and to improve program execution efficiency by allowing the overlap of the execution for asynchron...
详细信息
ISBN:
(纸本)9781450395175
Modern programming languages, such as Rust, have adopted the coroutine concept to better utilize computation resources and to improve program execution efficiency by allowing the overlap of the execution for asynchronous tasks. These programming languages often use the concept of userland thread library to dispatch the asynchronous tasks defined by the programmers. Nevertheless, it is often the case that the task scheduling on a user-space library is non-preemptive and would lead to unbounded execution time of a task. In this work, we aim to develop a tracing methodology to capture unbounded execution time of asynchronous tasks in Rust programs. Based on the analyses of the Rust standard library, we identify several execution contexts of asynchronous computation in Rust, and develop a portable context aware tracing methodology that is able to trace the execution time of nested asynchronous computation work across different Rust runtimes. We develop a framework, called CAT, to collect and visualize the asynchronous runtime activities. The results show that CAT can help pinpoint the asynchronous computation exhibiting prolonged execution time. We believe that CAT is a complement of existing tools to improve the execution efficiency of asynchronous operations in Rust.
暂无评论