HackerTube 中文?
Software boundaries and change →

When one component fails, who can keep working?

One process fails. Must unrelated requests wait? Separate failure propagation from throughput limits, then trace what the operating system and service manager can actually isolate.

Questions in this reading · 19
  1. Can a service survive a local failure?
  2. Can healthy work continue when one component fails?
  3. Who manages a service after startup?
  4. Where does the kernel's job end?
  5. How far can one bottleneck spread?
  6. What must happen before work can run in parallel?
  7. What does a repeated microbenchmark leave out?
  8. During an incident, how can a command be distinguished from an observation?
  9. Did the timed loop actually do the work?
  10. After a local failure, which promise can still be kept?
  11. A sound is missing. Who can still work?
  12. Yielding does not create queue space
  13. Follow the protection to the thinnest wire
  14. A running machine and a reachable service
  15. Why are cars braking after the chicken has gone?
  16. Where does one borrower’s spending cut show up?
  17. An introduction is different from sustained spread
  18. After a leak or a cache loss, what takes the load?
  19. What converts thermal expansion into a buckling problem?

Can a service survive a local failure?

Compare containing an exceptional condition with isolating a failing process. In each case ask which healthy work can still proceed.

Compare original passages and timestamps · 2
it might throttle because the cpu is overheating but it shouldn't crash
Over 200,000 Servers in One Place! Visiting Hetzner in Falkenstein (Germany) · ▶ 18:47–19:18
when a process crashes everything else progresses right so most of the system still works
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019 · ▶ 14:12–14:23

Can healthy work continue when one component fails?

Process isolation and decoupling services address failure at different scales. Both limit propagation, but shared resources can still carry failure across a boundary.

Compare original passages and timestamps · 2
when a process crashes everything else progresses right so most of the system still works
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019 · ▶ 14:15–14:23
the ability to isolate bottlenecks so that they don't spread through the system
Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp · ▶ 9:40–9:49

Who manages a service after startup?

A service manager responds to change across a system. Isolated processes contain failures inside a running application. Each boundary protects different work.

Compare original passages and timestamps · 2
maintaining services needs to listen to hardware and software changes
The Tragedy of systemd · ▶ 12:43–12:55
separating failures by separating things into different processes
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019 · ▶ 14:37–14:43

Where does the kernel's job end?

Compare the kernel's responsibilities with the work of keeping services running as hardware and software change. Starting a process is just one part of managing its life.

Compare original passages and timestamps · 2
the operating system for this machine includes linux as a component but it also has to include all the rest
USENIX ATC '21/OSDI '21 Joint Keynote Address-It's Time for Operating Systems to Rediscover Hardware · ▶ 17:53–18:07
systemd as a project ends up complementing the linux kernel by providing all of this user space system layer
The Tragedy of systemd · ▶ 15:32–15:45

How far can one bottleneck spread?

Process isolation contains certain runtime failures. Decoupling services can contain a capacity problem. Identify what is still shared before relying on either boundary.

Compare original passages and timestamps · 2
separating failures by separating things into different processes
The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019 · ▶ 14:37–14:43
ability to isolate bottlenecks so that they don't spread
Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp · ▶ 9:40–9:48

What must happen before work can run in parallel?

Follow the point where workers have to wait. Adding workers helps only after the serial activity that feeds them can keep up.

Compare original passages and timestamps · 2
increasing the chances of pullaways and parallels, unlike the more orderly methods
The Fastest Way to Board a Plane Feels Like the Slowest · ▶ 3:30–3:47
the dispatch process itself became a bottleneck and not necessarily just
Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp · ▶ 12:53–13:02

What does a repeated microbenchmark leave out?

Compare the costs visible in an isolated hash-table operation with the effect of workload and cache behavior. Microbenchmarks help answer a narrower question than end-to-end measurements.

Compare original passages and timestamps · 2
But without running the data once, how do you know what dimensions are inconsequential?
CppCon 2017: Matt Kulukundis “Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step” · ▶ 20:19–20:25
when you go to time it you're timing the feature of interest which puts it in cash anyway
Modern Dictionaries by Raymond Hettinger · ▶ 48:33–48:41

During an incident, how can a command be distinguished from an observation?

Cantrill urges incident responders to ask questions the system can answer. The flight-controls lecture gives a concrete distinction: stick input goes to a computer, while a display can report control-surface deflection. Bring that distinction back to a failing service. Once the console says “recovery command sent,” ask how many workers are actually processing work. A command log and feedback from the controlled object observe different points. Two dashboards reading the same send log still provide only one observation.

Passages and timestamps · 3
debugging is the act of asking questions and answering them not guessing what the answer is
Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill • GOTO 2017 · ▶ 39:50–40:02
the stick's connected to a computer.
Special Lecture: F-22 Flight Controls · ▶ 21:59–22:00
rudder deflection surfaces, ailerons, where the horizontal stabilizers are at, how the engines are doing.
Special Lecture: F-22 Flight Controls · ▶ 31:17–31:25

Did the timed loop actually do the work?

Before reordering a waiting chain around a reported speedup, ask what was timed. Carruth makes the intended work observable to the compiler. Berger shows that even real work can time differently when code and data land at different addresses. Inspect the instructions first, then vary the layouts. Repeating the exact same binary a hundred times can leave a lucky placement entirely unchallenged.

Passages and timestamps · 2
In my case the observable side effect is the benchmarking.
CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!" · ▶ 44:30–44:34
layout biases measurement
"Performance Matters" by Emery Berger · ▶ 15:34–15:39

After a local failure, which promise can still be kept?

With two working propellers D’Andrea’s controller gives up yaw while retaining control of other motion variables. That spells out degraded operation precisely. Langner’s attack analysis shows the complementary problem: the protection system reads a falsified input, so the monitor shares the compromised feedback path. Continued operation depends on surviving actuators and on whether the evidence for “still within bounds” is independent. List each retained control objective next to its measurement source.

Passages and timestamps · 3
We relinquish control of yaw, but roll, pitch and acceleration can still be controlled with algorithms that exploit this new configuration.
The astounding athletic power of quadcopters | Raffaello D'Andrea · ▶ 7:19–7:28
with fake input data. And as a matter of fact, this fake input data is actually prerecorded by Stuxnet.
Ralph Langner: Cracking Stuxnet, a 21st-century cyber weapon · ▶ 7:18–7:25
The idea is to circumvent a digital safety system.
Ralph Langner: Cracking Stuxnet, a 21st-century cyber weapon · ▶ 7:44–7:49

A sound is missing. Who can still work?

At id a bad asset could turn into an obvious placeholder. Other people could keep running the game, while its owner could see what had failed. The slot-app team depended on a store interface shared by its entire catalog. Moving a checkbox could halt publication for every variant. Trace each fault one step downstream. One damages an asset in a scene. The other blocks the only route by which products can ship.

Passages and timestamps · 2
providing a default for a failure case will keep the game running and it will quickly show you what's missing
The Early Days of id Software · ▶ 11:35–11:45
a checkbox gets moved 10 pixels to the right, the entire thing falls apart
1,500 Slot Machines Walk into a Bar: Adventures in Quantity Over Quality · ▶ 31:03–31:08

Yielding does not create queue space

Long-running jobs on the Apollo Guidance Computer periodically checked for higher-priority work. That contract established who could run next. The queue still had finite room. During the landing, extra load from the radar let jobs accumulate until executive overflow triggered an alarm and a program restart. When reasoning about overload, write the priority policy and the capacity on separate lines. Even a high-priority job needs a place to enter the queue.

Passages and timestamps · 2
Jobs have to manually check at least every 20 milliseconds
34C3 - The Ultimate Apollo Guidance Computer Talk · ▶ 36:29–36:32
queue of jobs build up, which resulted in executive overflow
34C3 - The Ultimate Apollo Guidance Computer Talk · ▶ 58:01–58:07

Follow the protection to the thinnest wire

Draw the route outward from the wall socket and mark where the wire gets thinner. The presenter uses a plug fuse to show how protection can extend to the cord itself. Try the same check on a software limit: circle what it actually protects, then ask whether a downstream component reaches its limit before the guard trips.

Passages and timestamps · 2
before the wire gets overloaded
Perhaps the weakest link in the US electrical system · ▶ 8:53–8:56
so it protects the length of the wire
Perhaps the weakest link in the US electrical system · ▶ 16:23–16:27

A running machine and a reachable service

The traveling server remains powered by a UPS, but its public address still depends on a cellular link and a tunnel. Sketch power, transport and routing separately. A spinning fan and an unreachable service can coexist. To check the service promise, make a request from outside the machine.

Passages and timestamps · 2
a UPS system to keep the server up during the move
Moving online webserver using public transport · ▶ 0:45–0:48
a OpenVPN connection to a server that will route to us the server's public IP
Moving online webserver using public transport · ▶ 3:13–3:20

Why are cars braking after the chicken has gone?

The first driver brakes lightly. The next notices late and brakes harder, and a third inherits that disturbance. Follow the first car and it has already recovered; watch the line and a braking wave moves toward its tail. Draw three cars and vary reaction delay and spacing separately. Grey then imagines vehicles maintaining their spacing and coordinating acceleration. Which change merely protects one car, and which reduces the disturbance reaching its follower?

Passages and timestamps · 2
brakes a little harder than necessary
Traffic Has a Perfect Solution. Humans Are the Problem. · ▶ 1:13–1:17
Self-driving cars can just be programmed to stay in the middle
Traffic Has a Perfect Solution. Humans Are the Problem. · ▶ 3:32–3:36

Where does one borrower’s spending cut show up?

Keep two household ledgers in Dalio’s model. When A cuts spending, B loses income and faces the next debt payment with less cash. Burke reconstructs a different transfer in a blackout: once a line trips, power shifts onto the remaining lines. In both diagrams you must follow the arrow one step further, but what travels along it matters. Spending is forgone in the first case, while the load is redirected in the second. Mark what shrinks and what moves before tracing the next failure.

Passages and timestamps · 4
one person's spending is another person's income
How The Economic Machine Works by Ray Dalio · ▶ 16:08–16:12
a borrower's debts are a lender's assets.
How The Economic Machine Works by Ray Dalio · ▶ 20:41–20:44
above a preset limit
James Burke Connections, Ep. 1 "The Trigger Effect" · ▶ 11:38–11:44
cascade power off the overloaded line and onto another
James Burke Connections, Ep. 1 "The Trigger Effect" · ▶ 12:03–12:06

An introduction is different from sustained spread

In Grey’s account a jump from animals creates an initial case; a continuing chain needs susceptible hosts. He compares an isolated population with a city receiving new people. Return to Burke’s blackout with that distinction in mind. A relay tripped, but the cascade continued only where connected lines picked up the displaced load. The things transmitted differ. In both examples you can ask what additional condition the next step requires after the first has occurred.

Passages and timestamps · 3
In a small, isolated group
Why Some Diseases Only Traveled One Direction · ▶ 2:44–2:52
many chances for infection and even then the new-born plague needs a fertile environment
Why Some Diseases Only Traveled One Direction · ▶ 6:05–6:13
cascade power off the overloaded line and onto another
James Burke Connections, Ep. 1 "The Trigger Effect" · ▶ 12:03–12:06

After a leak or a cache loss, what takes the load?

In the rotating house, a sensor ring between seals creates an observable intermediate state after a leak. In early Facebook, losing a cache node could push work back onto a particular database. Draw normal load, the first fault, and the component receiving the consequence. Both systems may keep running after one failure. The third box tells you what keeping them running costs.

Passages and timestamps · 4
There's a seal, a sensor ring, and a seal.
I thought this rotating house was impossible. · ▶ 5:41–5:44
two seals and two sensors fail
I thought this rotating house was impossible. · ▶ 5:49–5:52
just add more machines linearly
CS50 Lecture by Mark Zuckerberg - 7 December 2005 · ▶ 7:35–7:40
different Memcache boxes would go down.
CS50 Lecture by Mark Zuckerberg - 7 December 2005 · ▶ 12:08–12:11

What converts thermal expansion into a buckling problem?

A free rod can expand; adding a support changes the length over which it can bow sideways. The rail example also needs a neutral temperature to tell when thermal loading is tensile or compressive. A thermal expansion coefficient alone therefore leaves out the reference condition at installation and the lateral supports that remain effective.

Passages and timestamps · 2
if it’s hotter than the neutral temperature, the rail experiences compressive stress.
Why Railroads Don't Need Expansion Joints · ▶ 11:51–12:01
restrain the rod at the centerpoint, effectively halving its length.
Why Railroads Don't Need Expansion Joints · ▶ 10:52–11:03

Try it on your own example

Draw the waiting chain and the failure chain for the same incident. Where do they coincide?