Learn
Lesson · Availability and Failure · Composing availability

Correlated Failure

Every formula on this course so far assumed independence. Add a shared cause that takes both machines at once with probability c and the pair is down with probability c + (1 − c)p², not p². A common cause of one part in a thousand makes a pair whose independent product is 10⁻⁴ eleven times worse, and at c = p/(1 + p) the second machine is buying nothing at all.

P(both down) = c + (1 − c)p² c is a probability, never a count p = 1/100, c = 1/1000 → 0.0010999 against the promised 0.0001 that is 11.00 × worse: 99.89001% rather than 99.99000% break-even c = p/(1 + p) = 1/101 ≈ 0.009901 pair = one machine
The term the independent model leaves out

Core ideas

What this lesson establishes

A lab cannot check an assumption. What it can do is compute the answer under two models and put them on the same axes, which is what this one does.

1

A common cause is added whole and only p² is discounted

Split the ways a pair goes down: a shared event takes both, with probability c; otherwise, with probability 1 − c, they fail independently and both happen to be down, with probability p². So P(both down) = c + (1 − c)p². The first term enters at full size while the second is shrunk, which is why the curve leaves the independent line the moment c does.

2

c only has to beat p², and p² is tiny

For p = 1/100 the independent pair is 10⁻⁴. A common cause at 10⁻³ — one chance in a thousand of an event that takes both — is ten times larger than that, and it raises P(both down) to 0.0010999, eleven times what independence promised. The pair falls from four nines to two. Correlation does not need to be likely to dominate; it needs only to be likelier than a product of two small numbers.

3

There is a c at which the second machine is worthless

Solving c + (1 − c)p² = p gives c = p/(1 + p), exactly. Above it the pair is less available than a single machine. At p = 1/100 that is 1/101, about one per cent — so if a single shared event has a one per cent chance of taking both machines, the whole argument for the second machine has gone.

The material

The common cause, the gap it opens, and where redundancy stops paying

How to write down a correlation you cannot measure precisely, what it does to the numbers from the last three lessons, and how to report a figure honestly when the assumption under it is doubtful.

Definition · Common-cause failure

A common cause is an event that takes more than one component at once: a power feed, a rack, a network partition, an expired certificate, a configuration push, a deploy. Writing c for the probability that such an event occurs in the period and p for each component's own independent failure probability, a pair is down together with probability c + (1 − c)p². c is a probability in [0, 1] and never a count of machines.

At c = 0 this is exactly independence and the pair is p², which is the parallel formula of two lessons ago. The model does not replace the earlier one; it contains it, and the earlier one is the special case where a claim that was never checked happens to be true.

p = 1/100, p² = 1/10 000 = 0.0001 c = 0 P(both down) = 0.00010000 pair 99.99000% 4 nines c = 1/100 000 P(both down) = 0.00011000 pair 99.98900% 3 nines c = 1/10 000 P(both down) = 0.00019999 pair 99.98000% 3 nines c = 1/1000 P(both down) = 0.00109990 pair 99.89001% 2 nines c = 1/100 P(both down) = 0.01009900 pair 98.99010% 1 nine at c = p² exactly, P(both down) is 2.00 × the independent value

Read the middle row first. When c equals p² the correlated answer is exactly twice the independent one, which gives a usable rule of thumb: the independent model is trustworthy only while the shared causes are much rarer than the product of the individual failures. For a pair of four-nines machines that product is 10⁻⁸, and very little in a data centre is rarer than that.

Where the second machine stops earning its place

Theorem · The break-even common cause

A pair is exactly as available as one machine when c = p/(1 + p).

The pair is no better than a single machine when c + (1 − c)p² = p.

Rearranging: c − cp² = p − p², so c(1 − p²) = p(1 − p).

Factor 1 − p² = (1 − p)(1 + p) and divide by 1 − p, which is positive for p < 1: c(1 + p) = p, hence c = p/(1 + p).

At p = 1/100 this is 1/101 ≈ 0.009901. Above that value the second machine is worse than useless: it adds cost, complexity and a failover path while lowering availability.

□

How to report a number whose assumption you doubt

You will rarely know c. What you can do is bracket it: compute the independent figure, compute the figure at a c you would not be surprised by, and report both with the gap between them named. A single number computed under an unstated assumption is the failure mode this lesson exists to prevent, and it is not fixed by choosing a more conservative single number.

Example · The same pair, reported two ways

“Two 99% machines give 99.99%” is the independent answer. “Two 99% machines give 99.99% if they fail independently, and 99.89% if one event in a thousand takes both — they are in the same rack, so the second figure is the one to plan against” is the same arithmetic and a different claim. The second sentence is what the lab is for: move c up from zero and the red curve leaves the dashed line immediately.

The practical follow-up is that c is the quantity to attack. Splitting replicas across racks, power feeds, availability zones, deploy waves and certificate authorities are all attempts to lower c, and each of them is worth more than another replica once c is above p². The lab makes that comparison directly: a replica multiplies p² by p, and it does not touch c at all.

Example · Where correlation actually comes from

The shared deploy is the one that catches teams with genuinely independent hardware: five replicas in five racks across three zones, all receiving the same bad configuration within ninety seconds. For that failure the fleet is one machine, c is the probability of shipping a bad change, and no amount of n in the previous lesson's binomial changes the answer. Staged rollouts are an attempt to make c smaller by making the deploy not simultaneous.

Interactive

Correlated failure

A 0.1% common cause swamps a pair whose independent product is 10⁻⁴

The common causeP(both down) = c + (1 − c)p², and c is a probability, never a count
independence, p²with the common causewhere redundancy stops paying

Method

Auditing an availability claim for correlation

Three of these steps happen before any arithmetic. The assumption is the thing being checked, and it is not visible in the number.

1

List what the components share

Rack, power feed, network path, availability zone, deploy pipeline, configuration source, certificate authority, DNS zone, the same library version, the same on-call engineer. Anything on that list is a candidate common cause, and the deploy pipeline is the one most often forgotten because it does not appear on a topology diagram.

2

Put a number on c, however rough

An order of magnitude is enough to decide the question. Ask how often a single event has taken the whole set out in the last two years, divide by the number of periods, and use that. A c you can defend to one significant figure beats an independence assumption you cannot defend at all.

3

Compute both figures and compare c with p²

p² for independence, c + (1 − c)p² for the pair. If c exceeds p² the correlated term dominates and the independent figure is not an estimate of anything. Report the pair of numbers, not the better one.

4

Spend on c before spending on n

Another replica multiplies the independent term by p and leaves c untouched. Separating the failure domains lowers c itself. Once c is above p² the second of those is the only one that moves the answer, and the break-even c = p/(1 + p) says where the replica has stopped being worth anything at all.

Common causes

Score 0 / 0

Two database replicas in one rack

The independent figure is on the design document. The operations record says the rack has lost power twice in three years, which is the number the design document does not contain.

each replica p = 1/100 of being down in a given month what the design document says P(both down) = p² = 1/10 000 = 0.0001 A = 99.99000%, four nines, 4 min 22.80 s a month what the rack contributes 2 power events in 36 months → c ≈ 2/36 ≈ 1/18 but only some of those exceed the batteries; say one in three c ≈ 1/54 ≈ 0.01852 the break-even c* = p/(1 + p) = (1/100)/(101/100) = 1/101 ≈ 0.009901 c ≈ 0.01852 > c* ≈ 0.009901 so the pair is WORSE than one replica P(both down) = 0.01852 + (0.98148)(0.0001) = 0.018617 A = 98.1383% against a single replica's 99%

The conclusion is not “the estimate was a bit optimistic”. The second replica, in this rack, makes the service less available than one replica would be, while doubling the cost and adding a failover path that can itself fail. Everything about the arrangement is justified by a product of two small numbers that is swamped by a term nobody wrote down.

Note what fixes it and what does not. A third replica in the same rack changes p³ and leaves c alone: still 0.0186, still worse than one machine. Moving the second replica to another rack attacks c directly, and that is the whole of the improvement.

For a faded rehearsal, keep p = 1/100 and suppose the second replica moves to a different rack on the same power feed, which you estimate cuts c to 1/500. The supplied first move is to compare that c with p² = 0.0001 before computing anything. Work out P(both down), the pair availability, and the factor by which it still exceeds the independent promise; then say what the next c to attack is.

Common mistakes

1
Assuming independence by default, and silentlyThe product, the parallel complement and the binomial tail are all theorems about independent events, and none of them announces its premise in the answer. Same rack, same deploy, same certificate, same zone: each of those makes the computed figure a number about a system that does not exist. The fix is to say the word “independent” out loud every time you multiply.
2
Treating c as a count of machines or of incidentsc is the probability that one event takes the whole set in the period under discussion. “c = 2 because we lost two machines” and “c = 3 because three racks share the feed” both produce nonsense, and the nonsense is not obvious because the formula returns a number. Convert incidents to a rate, then to a probability per period, before it enters the formula.
3
Answering a correlation problem with another replicaAdding a replica multiplies the independent term by p and does not touch c at all. Once c exceeds p² the extra replica is improving the smaller of the two terms, and once c exceeds p/(1 + p) the replicas are actively making things worse. Separating the failure domains is the move that changes the number.

Check your understanding

✓
Finish when you cannot multiply two availabilities without naming what the components share.

You should be able to compute c + (1 − c)p², compare c with p² to decide whether the independent figure means anything, derive and use the break-even c = p/(1 + p), and report a correlated pair as two figures with the gap between them named.

Note: The five lessons so far turn a system into one fraction. What an organisation does with that fraction is a separate question, and it has an arithmetic of its own that is often mistaken for policy: a target implies a quantity of failure that may be spent, an incident spends a computable share of it, and the two are counted in failed requests rather than in minutes. “Error Budgets” is that arithmetic.

Kept in this browser only, for you. Nothing is sent anywhere and nothing checks it. Carry it to another device.

Feedback and recommendations

Something to change about this lesson? Write it down, tick it off when it is handled, and export the list when you want to act on it. Kept in this browser only: nothing is sent anywhere, and nobody is notified.

No recommendations yet for this lesson.