Course contentsShow
← Embedded Systems & Computer Architecture
Lesson 644 of 9369. Embedded Systems Reliability and SafetyFree lesson

Distinguishing Reliability from Availability Metrics

Calculate the difference between system reliability, which measures continuous failure-free operation, and availability, which accounts for downtime and repair cycles.

In this lesson, you will learn how to distinguish between system reliability, which focuses on the probability of continuous success, and availability, which accounts for the system's ability to recover after a failure.

Understanding Reliability

Reliability is the probability that your embedded system will perform its required functions under stated conditions for a specific period of time without failing. It is a continuous metric. If your device is a satellite sensor that must operate without interruption for one year, reliability is your primary concern.

Reliability is often expressed as R(t)=e−λtR(t) = e^{-\lambda t}, where λ\lambda is the failure rate. Once a failure occurs, the reliability clock effectively "resets" or ends; it does not care if you can fix the system later.

Understanding Availability

Availability, on the other hand, measures the proportion of time a system is functional, factoring in both the time to failure and the time it takes to repair or reboot the device. It is a service-oriented metric. If your device is an industrial gateway, it might crash occasionally, but as long as your watchdog timer reboots it quickly, your availability remains high.

Availability (AA) is typically calculated as: A=MTBFMTBF+MTTRA = \frac{MTBF}{MTBF + MTTR}

  • MTBF (Mean Time Between Failures): The average time the system runs before it crashes.
  • MTTR (Mean Time To Repair): The average time taken to detect, reboot, or physically replace the unit.

The Practical Distinction

Consider a firmware watchdog implementation. If you improve your error-handling code to recover from a memory corruption event in 50ms instead of 5 seconds, your availability increases significantly. However, your reliability remains identical because the original fault still occurred.

// Reliability is about preventing this:
if (detected_memory_corruption) {
    hard_reset(); // Reliability is already compromised
}

// Availability is about optimizing this:
void watchdog_recovery() {
    // Shorter MTTR increases Availability
    clear_registers();
    reinitialize_peripherals();
    jump_to_main(); 
}

Reliability measures the "perfection" of your logic, while availability measures the "resilience" of your service.

Key Takeaway: Reliability focuses on the probability of continuous failure-free operation, while availability focuses on the percentage of time the system is operational by accounting for both failures and the speed of recovery.