Topics /

Systems & Performance

The most popular blog posts about systems & performance on Hacker News. 377 posts.

2022
211

Where Linux's load average comes from in the kernel

You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…

219

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…

221

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…

227

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.

228

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…

229

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…

230

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…

232

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…

234

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…

240

Cranelift, Part 4: A New Register Allocator

This post is the fourth part of a three-part series 1 describing work that I have been doing to improve the Cranelift compiler. In this post, I'll describe the work that went into regalloc2 , a new register allocator I developed over the past year. The allocator started as an effort to port IonMonkey's register…