Skip to main content
QUICK REVIEW

[论文解读] Predictable Software -- A Shortcut to Dependable Computing ?

George Candea|ArXiv.org|Mar 11, 2004
Software System Performance and Reliability参考文献 13被引用 5
一句话总结

本文提出通过环境控制和故障隔离机制(如熔丝、保护器和资源监管者)提升软件的可预测性,而非重写有缺陷的代码,从而改善软件的可靠性。通过强制执行输入/输出不变性与资源限制,该方法将不可预测的软件转变为可停止故障、可预测的组件,为传统容错方法提供了一种更便宜、更快速的替代方案。

ABSTRACT

Many dependability techniques expect certain behaviors from the underlying subsystems and fail in chaotic ways if these expectations are not met. Under expected circumstances, however, software tends to work quite well. This paper suggests that, instead of fixing elusive bugs or rewriting software, we improve the predictability of conditions faced by our programs. This approach might be a cheaper and faster way to improve dependability of software. After identifying some of the common triggers of unpredictability, the paper describes three engineering principles that hold promise in combating unpredictability, suggests a way to benchmark predictability, and outlines a brief research agenda.

研究动机与目标

  • 解决软件可靠性失败的根本原因,即在意外压力下行为不可预测,而非源于内在缺陷。
  • 通过聚焦于环境可预测性而非修复每个潜在的软件缺陷,降低实现可靠系统的成本与复杂度。
  • 提供一个系统化框架,使软件在已知和未知压力条件下均能表现出可预测行为。
  • 使现有软件能够以更高信心集成到复杂系统中,确保其故障行为可预测。
  • 建立可预测性基准的基石,并指导可信赖机制的渐进式改造。

提出的方法

  • 引入‘熔丝’机制,在输入或资源使用超过预设安全阈值时检测并中止执行。
  • 部署‘输出保护器’,将模块输出与形式化不变性进行验证,确保符合预期行为。
  • 实施‘资源监管者’,监控并限制CPU、内存和网络使用,防止资源耗尽。
  • 使用‘系统宏编译器’通过面向切面的技术自动插入熔丝、保护器和监管者到软件组件中。
  • 利用动态不变性推断工具(如Daikon)从观察到的程序行为中学习并强制执行不变性。
  • 应用实验方差等指标量化可预测性,并指导可预测性机制的成本效益改造。

实验结果

研究问题

  • RQ1提升环境可预测性是否能降低复杂软件系统中级联故障的发生频率与影响?
  • RQ2在不修改源代码的前提下,熔丝、保护器和资源监管者在遗留软件上自动应用的程度如何?
  • RQ3如何以精确且可扩展的方式学习或表达输入与输出行为的不变性,适用于现实世界系统?
  • RQ4哪些指标最能捕捉软件在压力下的行为可预测性?它们如何指导针对性的可靠性改进?
  • RQ5基于宏编译器的方法是否能实现从组件级可预测性保证到系统级可靠性的组合式推理?

主要发现

  • 软件不可预测行为主要由意外输入(大小、内容和到达速率)、模块输出异常行为以及资源耗尽引发。
  • 缓冲区溢出和格式错误的输入(如SQL Slammer和DNS缓存投毒攻击中所利用的)表明,强制执行输入大小和格式约束可防止灾难性故障。
  • 当一个模块的异常输出或资源消耗破坏下游模块时,故障波会传播,导致级联故障,从而掩盖根本原因。
  • 2001年CNN.com的宕机事件表明,即使具备负载均衡和动态资源配置的系统,也可能因请求速率迅速增加而失效,原因在于缺乏准入控制。
  • 熔丝、保护器和资源监管者可通过将行为限制在预期范围内,将黑盒软件转变为可停止故障的模块,实现可预测的故障模式。
  • 可预测性指标(如实验方差)可指导可预测性机制的渐进式改造,优先选择可预测性提升能带来最高可靠性增益的组件。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。