论文部分内容阅读
环境上下文感知应用可以根据传感器获取的环境上下文信息,智能地调整自身行为以适应周围环境。但是由于传感器噪音,收集到的环境上下文信息可能是不准确、不完整、甚至相互冲突的,导致应用出现异常调整甚至是错误。为了解决这个问题,常用方法是在运行时刻根据预先指定的一致性约束对环境上下文信息进行检测,以此来为应用发现环境上下文一致性错误,这个过程称为约束检测。通常,约束检测在每收集到一条环境上下文更新时被调度。但是这种朴素的调度策略是低效的,当涉及到繁重的工作场景时,即使采用比较高效的增量或并行检测技术,也几乎无法使用。一种解决低效问题的方法是将多条环境上下文更新放到一个分组中同时进行检测,这被称为基于批处理的调度。但是这种调度会导致严重的一致性错误缺失问题,从而造成应用的错误行为。为了解决这个两难的困境,本文研究提出一种新的调度策略GEAS,能够提升环境上下文一致性检测的效率,同时避免错过任何环境上下文一致性错误。GEAS的主要启发点在于,当对一个分组中的多条环境上下文更新同时进行检测时,我们观察到,只有某些特定的环境上下文更新组合放到同一分组中,才会导致检测结果中一致性错误的缺失。GEAS巧妙地将这些能够导致检测结果中一致性错误缺失的环境上下文更新组合建模为可疑性条件,然后在运行时刻识别这些可疑性条件,避免将匹配到任意一个可疑性条件的环境上下文更新放到一个分组中同时检测。此外,值得注意的是,GEAS是一个对约束检测进行调度的策略,它能够从正交的维度对现存约束检测技术本身的性能提升进行进一步的补充,因此能够普遍提升所有现存约束检测技术的检测效率。特别地,GEAS的主要工作分为三个阶段。首先,GEAS从相关一致性约束中静态地获取可疑性条件。然后,基于这些静态获取的可疑性条件,GEAS在运行时刻对收集到的环境上下文更新进行识别,主动避免将匹配到可疑性条件的环境上下文更新放到同一个分组中。最后,只要同一组的环境上下文更新没有匹配到任意一个可疑性条件,GEAS就可以自适应地对一组环境上下文更新同时进行检测。本文配合四种先进的约束检测技术开展实验,在大容量的真实出租车数据上对GEAS的性能进行实验评估,来验证GEAS的必要性和独特的有效性。实验结果显示:(1)GEAS与即时调度策略相比,实现了 72%-539%的效率提升;(2)GEAS成功地避免了检测结果中一致性错误的缺失,而传统的基于批处理的调度策略则造成了 39.2%-5.3%的一致性错误缺失。除此之外,为了进一步验证GEAS在现实繁重工作量场景下的有效性,本文还模拟真实场景进行了案例研究。结果表明:(1)GEAS与即时调度策略相比,达到了 47%-446%的效率提升;(2)GEAS在检测中仍然保持接近零的一致性错误缺失率;(3)GEAS显著地提升了约束检测技术可处理的检测工作量。