Zebras All the Way Down - Bryan Cantrill, Uptime 2017
Code & Supply6 HN recommenders · 2018–2025
49K views · talk · evergreen · Uploaded 2017-10-23
Bryan Cantrill's Uptime 2017 talk on the engineering challenges of the stateful data path, including storage, firmware and hardware bugs. It uses the 'zebras vs. horses' diagnostic heuristic to explain why rare failures keep appearing.
A perennial HN favorite whenever firmware, disks, ECC or opaque hardware come up, valued as both entertaining and sobering.
38:47RailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
1:03:55🚀 TDD, Where Did It All Go Wrong (Ian Cooper)
DevTernity Conference
54:20Bret Victor - Inventing on Principle
Rui Oliveira
31:44The Value of Values with Rich Hickey
InfoQ
19:10Velocity NY 2013: Richard Cook, "Resilience In Complex Adaptive Systems"
O'Reilly
1:02:26Solving Problems the Clojure Way - Rafal Dittwald
Clojure/north
52:35Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill • GOTO 2017
GOTO Conferences
18 comments from Hacker News
On The Turing Completeness of PowerPoint [LINK] Compiling C to printable x86, to make an executable research paper [LINK] HDR Photography in Microsoft Excel?! [LINK] Zebras All the Way Down [VIDEO] Solving Layout Problems with CSS Grid and Friends [LINK] Console Security - Switch [LINK] Let's move SMM out of firmware and into the kernel [LINK] Bringing Linux back to server boot ROMs with NERF and Heads [LINK] Sharing the Chisel [LINK] (looks like the actual conference video wasn't released)
We Really Don't Know How to Compute: Gerry Sussman - [LINK] Zebras All the Way Down: Bryan Cantrill - [VIDEO] Jonathan Blow on Deep Work: Jonathan Blow - [LINK] Simple Made Easy: Rich Hickey - [LINK] Effective Programs - 10 Years of Clojure: Rich Hickey - [LINK] The Last Thing D Needs: Scott Meyers - [LINK]
Zebras All the Way Down - Bryan Cantrill, Uptime 2017 [VIDEO] Lots of great tangents that add to the subjects. I love talks like this.
One of my favorite conference talks is semi related to problems like this. [VIDEO] Brian Cantrill - Zebras all the way down
> skates of magnetic readers flying on a cushion of air above a rapidly rotating disc, with the gap separating a few dozen nanometers, often smaller than the process size in the controller's silicon. Complete aside, the fly-height of a magnetic head is actually fractions of a nanometer (i.e. hundreds of picometers). EDIT: I got this from a talk by Bryan Cantrill[1]. The fly-height is allegedly 0.8 nanometers (800 picometers). [1]: [VIDEO]
(Sheepishly) My only reference is a talk by Bryan Cantrill[1] where he states that an exec at a hard-drive manufacturer stated it was ".8 nanometers". I will try to find a better source than that. EDIT: There is a paper from 2016 which did an analysis in the difference in the flying height of the head during different operations, and it was measured in Angstroms[2]. I couldn't find one that actually gives a precise value of the flying height. There is a 2011 paper which states that some system they were testing allowed for 4-9 nm flying heights[3] which is about half-an-order-of-magnitude larger than the claim -- but that's already 7 years old. [1]: [VIDEO] [2]: [LINK] [3]: [LINK]
Bryan Cantrill made this claim in a talk recently[1], and the fly-height is apparently 800 picometers. [1]: [VIDEO]
On this topic (and related in many ways) is Bryan Cantrill's talk Zebras All the way Down.[1] The gist is that in medicine there's the concept of diseases that are zebras and horses, rare and common, and the saying goes "when you hear hoof beats think horses not Zebras". Unlike medicine, in software most the easy problems have already been abstracted away or made trivial through our software stacks, so often what's left are Zebras. What used to be the exceedingly rare bugs now account for a large proportion of the odd behavior we see in very robust tech stacks, because the easy bugs have been hunted down and eliminated already. 1: [VIDEO]
It's worth noting that in a computing context the reliability of this heuristic is questionable relative to what it would be in medicine: [VIDEO] Zebras All the Way Down - Bryan Cantrill, Uptime 2017
Well, on the other hand, better to have the ability to deal with it rather than have everything obfuscated in unfixable proprietary firmware… [VIDEO]
There's a good Bryan Cantrill talk about that.[1] The gist is that eventually, when you throw enough resources at a problem, all that's left are the really uncommon problem and bugs, and this is specifically what you get in the data path (including drive firmware) where things get harder and harder to figure out as the code gets more hidden and obscure. As with all his talks, you can expect it to be quite entertaining as well as informative and historical (if from his POV). 1: [VIDEO]
In my time writing databases, I found that not only the mount-flags could result in data-loss despite fsync, given you use fsync as it is supposed to be used [0], but even enterprise-grade hardware would at times (at that scale [1]) drop and/or corrupt a few bits here and there. That reminds me of the case where AWS famously revealed that a single NIC in their ginaromous S3 fleet flipped a single bit once in a while and that caused an outage because their gossip-daemon responsible for fleet health-checks failed spectacularly [2]. Bryan Cantrill's talk on the realted topic of hardware/firmware bugs is pretty good [3]. [0] [LINK] [1] [LINK] [2] [LINK] [3] [VIDEO]
A relevant Bryan Cantrill talk segment on this, which heightens the paranoia around this. Namely, firmware hiding correctable errors and only reporting uncorrectable errors. [VIDEO]
>Why does anyone really care about non-free firmware blobs? Aside from the philosophical considerations, stuff breaking in a black-box firmware that you're lead into believing "just works" is particularly aggravating. I'll link Bryan Cantrill's talk on the subject, he's more entertaining than I am. [1] [1] [VIDEO]
I'm shocked! Firmware vendors, the last bastion of high quality memory-safe C code, solving complex problems. Code firmly audited and formally verified to the highest degree. And now you tell me these people, with the highest known software quality got "parsing image formats" wrong? It's truly zebras all the way down [VIDEO]
> When we really should have been formally addressing problems from first principles. Because if our OS can't recover gracefully when the disk fills up, then we don't really have anything. And so many OSs (including our desktops) panic when the disk fills up, that we don't really have anything. At a low enough level, all of the tools we rely upon are trash. Unfortunately, the OS can't really "recover" most of the time because it is being constantly lied to by several(!!!) layers of uncooperative hardware/firmware. It's zebras all the way down: [VIDEO] > In this case, by letting programs wait until the user has cleared off disk space If your system is really in a no-disk-space-left state you might not be able to login to fix it: [LINK] And even assuming you can login, sometimes you can't delete files either; you need to free space in another way before being able to delete files. [LINK] Filesystems and persistence are hard.
For an entertaining/terrifying perspective on firmware, obligatory Bryan Cantrill talk "Zebras All the Way Down" [VIDEO]
> Or you can spend half a billion dollars to solve the issue in hardware. And hope that your hardware/firmware doesn't ever get bugs. Or you can do checksumming at the hardware layer and checksumming at the software/FS layer. Protection in depth. ZFS has caught issues from hardware, like when LBA 123 is requested but LBA 456 is delivered: the hardware-level checksum for LBA 456 was fine, and so it was passed up the stack, but it wasn't actually the data that was asked for. See Bryan Cantrill's talk "Zebras All the way Down": * [VIDEO] And if checksums are not needed for a particular use-case, make them toggleable: even ZFS has a set checksums=off option. My problem is not having the option at all .