An Efficient Scheduler for Task-Parallel Interactive Applications

An Efficient Scheduler for Task-Parallel Interactive Applications
复制标题

DOI:
10.1145/3558481.3591092
复制
发表时间:
2023-06
期刊:
Proceedings of the 35th ACM Symposium on Parallelism in Algorithms and Architectures
影响因子:
--
通讯作者:
Kyle Singer;Kunal Agrawal;I. Lee
Kyle Singer;Kunal Agrawal;I. Lee
中科院分区:
其他
文献类型:
--
作者:
Kyle Singer;Kunal Agrawal;I. Lee

文献摘要

相似文献

现代软件通常是交互式的 - 应用程序与外部世界经常通信。对于此类应用程序,响应能力 - 他们对请求的响应速度与吞吐量一样重要。使用传统过程或静态线程有效地实施这些应用程序是困难且容易出错的。任务并行性有可能显着简化这些应用程序的实现 - 它允许程序员表达程序的高级逻辑流,并让调度程序处理调度,同步和异步I/O操作的低级别详细信息。研究人员已经开始研究如何最好地支持这种交互式应用程序,在这种交互式应用程序上,不同组件在优先级的任务并行平台上具有不同的响应能力。我们提出了提示I-Cilk,这是一种实际上有效的面向优先任务并行交互式应用程序的调度程序。与最先进的调度程序设计相比,我们的调度程序表现出卓越的性能,包括在Memcached Object Server上,这是一个大型现实世界的交互式应用程序,我们移植了该应用程序,该应用程序可以在任务偏置平台上运行。我们的调度程序设计违反了有关如何安排任务平行代码的传统民间智慧 - 我们远离随机工作窃取,我们通过频繁检查核心到优先级的任务实施了“及时”调度。我们表明这一点。根据我们测试的并行交互式应用程序的工作负载特性,此类设计选择是有意义的。
Modern software is often interactive -- applications communicate frequently with the external world. For such applications, responsiveness -- how quickly they respond to requests -- is as important as throughput. Efficiently implementing these applications using traditional processes or static threads is difficult and error-prone. Task parallelism has the potential to significantly simplify the implementation of these applications -- it allows the programmer to express the high-level logical flow of the program and letting the scheduler handle the low level details of scheduling, synchronization, and asynchronous I/O operations. Researchers have begun to study how to best support such interactive applications where different components have different responsiveness on priority-oriented task-parallel platforms. We propose prompt I-Cilk, a practically efficient scheduler for priority-oriented task-parallel interactive applications. Our scheduler exhibits superior performance when compared to the state-of-the-art scheduler design, including on the Memcached object server, a large scale real-world interactive applications that we ported to run on a task-parallel platform. Our scheduler design defies the conventional folk wisdom on how to schedule task-parallel code -- we moved away from randomized work stealing, and we implemented "prompt'' scheduling with frequent checking of core-to-priority-level assignments. We show that such design choices make sense based on the workload characteristics of the parallel interactive applications we tested.