Task-based programming models are excellent tools to parallelize and seamlessly load balance an application workload. However, the integration of I/O intensive applications and task-based programming models is lacking. Typically, I/O operations stall the requesting thread until the data is serviced by the backing device. Because the core where the thread was running becomes idle, it should be possible to overlap the data query operation with either computation workloads or even more I/O operations. Nonetheless, overlapping I/O tasks with other tasks entails an extra degree of complexity currently not managed by programming models' runtimes. In this work, we focus on integrating storage I/O into the tasking model by introducing the Task-Aware Storage I/O (TASIO) library. We test TASIO extensively with a custom benchmark for a number of configurations and conclude that it is able to achieve speedups up to 2x depending on the workload, although it might lead to slowdowns if not used with the right settings.
翻译:以任务为基础的编程模型是平行和无缝地平衡应用工作量的极好工具,然而,缺乏I/O密集型应用程序和基于任务编程模型的集成。通常,I/O操作将请求的线条拖到数据由支持设备服务为止。由于线条运行的核心变得空闲,因此应该有可能将数据查询操作与计算工作量或甚至更多的I/O操作重叠。然而,与其他任务重叠的I/O任务需要额外程度的复杂性,而目前没有编程模型的运行时间来管理。在这项工作中,我们注重将存储 I/O纳入任务模式,方法是引入任务软件存储 I/O (TASSIO) 库。我们用一个定制基准对若干配置进行广泛的测试,并得出结论认为,它能够根据工作量实现高达2x的速度,尽管如果不用于正确的环境,可能会导致速度放慢。