Meta quickly detects silent data corruptions at scale
Silent data corruptions (SDCs), data errors that go undetected by the larger system, are a widespread problem for large-scale infrastructure systems. Left undetected, these types of corruptions can…
Parsing JSON faster with Intel AVX-512
Many recent Intel processors benefit from a new family of instructions called AVX-512. These instructions operate over wide registers (up to 512 bits) and follow the Single instruction, multiple data (SIMD) paradigm. These new AVX-512 instructions allow you to break some speed records, such as decoding base64 data at…
Avoid exception throwing in performance-sensitive code
There are various ways in software to handle error conditions. In C or Go, one returns error code. Other programming languages like C++ or Java prefer to throw exceptions. One benefit of using exceptions is that it keeps your code mostly clean since the error-handling code is often separate. It is debatable whether…
DBOS: A database-oriented operating system
Today, most people develop applications on operating systems such as Linux which are more than thirty years old, even though computing has changed a lot in the meantime. Since Linux was first released in 1991, the size of application state and data has grown by several orders of magnitude, many applications have moved…
Debugging bare-metal STM32 from the seventh level of hell
Here’s a not-so-brief story about troubleshooting a problem that was at times vexing, impossible, incredibly challenging, frustrating, and all around just a terrible time with the bare-metal STM32G4 firmware for the moteus brushless motor controller. Background First, some things for context: moteus has a variety of…
The GPU Banana Stand
Freshly whipped WebGPU, with ice cream
When an M1 Mac mini is faster than an M1 Pro: contention and core allocation
When running some tasks confined to E cores, the original M1 chip from 2020 completes them significantly quicker than an on an M1 Pro. Here’s the detail.
State machine replication, and why you should care
Listen in on Jane Street’s Ron Minsky as he has conversations with engineers working on everything from clock synchronization to reliable multicast, build systems to reconfigurable hardware. Get a peek at how Jane Street approaches problems, and how those ideas relate to tech more broadly.
Is CBL-Mariner going to become Microsoft Linux?
Microsoft is increasingly standardizing on its in-house CBL-Mariner Linux distribution. Is this Microsoft Linux?
Netflix: 30% bitrate saving using Film Grain Synthesis
Searchable archive of articles, posts and press on video denoising, per-shot encoding, AV1 film grain synthesis, MXL and broadcast AI.
System memory allocator free operation zeroes out deallocated blocks in iOS 16
The system memory allocator free operation zeroes out all deallocated blocks in iOS 16.1 beta or later. Invalid accesses to free memory might result in new crashes or corruption, including NULL -pointer dereferences and non-zero memory being returned from calloc .
Ventura Issues
I’m more surprised by the nature of many of these issues, by how ridiculous they are compared with the sheer age and supposed maturity of a 20+ year-old operating system.
A lock-free, concurrent, generic queue in 32 bits
While considering concurrent queue design I came up with a generic, lock-free queue that fits in a 32-bit integer. The queue is “generic” in that a single implementation supports elements of any arbitrary type, despite an implementation in C. It’s lock-free in that there is guaranteed system-wide progress. It can…
Galois field instructions on 2021 CPUs
CPUs like to operate on data types such as uint8_t , uint16_t , uint32_t , and uint64_t . These data types can be viewed as integers modulo 2 8 , 2 16 , 2 32 , and 2 64 respectively. Addition and multiplication can be defined on these integers modulo 2 N in a way which is familiar to most people; for example, in…
MirageOS 4.0 – Self-managed internet infrastructure with unikernels
Read the post on "Announcing MirageOS 4.0.0" from our blog.
Verifying distributed systems with Isabelle/HOL
We use distributed systems every day in the form of internet services. These systems are very useful, but also challenging to implement because networks are unpredictable. Whenever you send a message over the network, it is likely to arrive quite quickly, but it’s possible that it might be delayed for a long time, or…
A FOSS proposal for a new type of OS for a new type of computer (2021)
A possible next evolutionary step for computers is persistent memory: large capacity non-volatile main memory. With a few terabytes of nonvolatile RAM, who needs an SSD any more? I will sketch out a proposal for how to build an versatile, general-purpose OS for a computer that doesn't need or use filesystems or files…
Inverting a binary tree using x64 assembly
While browsing twitter, I came across this tweet:
Windows 9x Video Minidriver HD+
The OS/2 Museum has made available the first version of a display driver disk for Windows 9x running on VirtualBox . The driver uses a linear framebuffer and supports 8/16/24/32bpp modes with resolutions up to 1920×1200 pixels (see more below). The driver is not accelerated but tends to be very speedy on modern…
Unix as a tool forge and how Emacs fits in Unix philosophy
Wikipedia cites a few different sources on what “Unix Philosophy” is. Peter Salus summarizes it as:
GCP, AWS, and Azure ARM-based server performance comparison
Compare ARM cloud server network performance using Apache APISIX as an API Gateway benchmark workload across AWS, Google Cloud, Azure, and Oracle Cloud.
Another Vulnerability in the LPC55S69 ROM
The discovery of an undocumented hardware block in the LPC55S69.
Jepsen: Radix DLT 1.0-Beta.35.1
Radix DLT (Distributed Ledger Technology) is a distributed ledger: a serializable log of transactions over a state machine, along with mechanisms for querying that state. Throughout this report, “Radix” refers to the Radix DLT software .
Rewriting Sysctl(8) in Rust: Systeroid
sysctl is a simple and great tool for modifying the kernel parameters. It does its job very well by providing an easy-to-use interface for /proc/sys. It is maintained as a part of procps toolkit for years and it can easily be considered a legacy tool today. So why not push it to its limits and turn it into a more…
Building a database buffer pool in Zig using io_uring's new fixed-buffer mode
In this post, we will explore how to build a high-performance database buffer pool in Zig using io_uring's new fixed-buffer mode.
Transcending Posix: The End of an Era?
In this article, we provide a holistic view of the Portable Operating System Interface (POSIX) abstractions by a systematic review of their historical evolution. We discuss some of the key factors that drove the evolution and identify the pitfalls that make them infeasible when building modern applications.
Brave New Trusted Boot World
Posts and writings by Lennart Poettering