Topics /
Systems & Performance
The most popular blog posts about systems & performance on Hacker News. 6,942 posts.
Async I/O on Linux in databases
I've been working on a complex multi-model database for a few weeks now, and recently I took time to simplify and test out an idea I had on a simple key-value database. I started with the basics: A hash table in memory, a simple append-only log
Using Java's Project Loom to build more reliable distributed systems
Building distributed databases is very difficult. There are lots of clever ideas you can put into a distributed database, but making the ideas work well together in a real system can be very challenging because different decompositions of the same problem can massively affect how difficult it is to solve, and bugs are…
Running Your Own AS: BGP on FreeBSD with FRR, GRE Tunnels, and Policy Routing
How I obtained my own AS number and IPv6 prefix, set up a FreeBSD BGP router with FRR, and built a tunnel overlay to bring globally routable addresses to servers that already have provider-assigned...
How to speed up the Rust compiler
It has been five months since my last general update on the Rust compiler’s performance. Let’s see what has happened in that time.
Attacking the Windows Nvidia Driver
Posted by Oliver ChangModern graphic drivers are complicated and provide a large promising attack...
1.1B Taxi Rides Using OmniSciDB and a MacBook Pro
Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...
Optimizing Large-Scale OpenStreetMap Data with SQLite
The personal website of JT Archie. Includes a blog, work ethic, and projects they have worked on.
On Sharding
If you need to handle really a lot of traffic, there’s only one way to do it: sharding. Which is to say, splitting up the incoming requests among as many hosts (or Lambda functions, or message brokers, or data streams) as you need. Once you get this working you can handle an essentially unlimited request volume. Of…
Supercharging the Git Commit Graph IV: Bloom Filters
We've been discussing the commit-graph feature in Git 2.18 and how we can use generation numbers to accelerate commit walks. One area where we can get
Virtual Memory with 256 Bytes of RAM
I just finished updating my C compiler and minimal CPU specification to include virtual memory. The process of adding virtual memory support to a CPU, a kernel, and a compiler toolchain has made me realize that there is a lack of good explanations for how all of these parts fit together. I also realized that a…
Setenv Is Not Thread Safe and C Doesn't Want to Fix It
You can't safely use the C setenv() or unsetenv() functions in a program that uses threads. Those functions modify global state, and can cause other threads calling getenv() to crash. This also causes crashes in other languages that use those C standard library functions, such as Go's os.Setenv ( Go issue ) and Rust's…
Pack: A new container format for compressed files
The most efficient way to pack files.
What's wrong with enterprise Linux
An examination of what is wrong with the Enterprise Linux model and a recommendation for a middle ground.
A Review of Linux on Surface Pro 4
I bought a Surface Pro 4 in 2016. It has an Intel Core m3-6Y30 CPU and 4GB memory. The spec is not that impressive even compared to an average laptop released years earlier. On the other hand, the form factor is very attractive to me: at a very low price, you get a tablet with a beautiful HiDPI 2k screen, a pressure…
How Not to Support Desktop GNU+Linux, Zoom Edition
<small>Pssst! Formatting messed up? Add ".md" to the url ✨ If you're stuck using Zoom, jump on [one](https://community.zoom.com/t5/Meet...
How much does Rust's bounds checking cost?
Rust prevents out-of-bounds memory accesses and buffer overruns via runtime bounds checks - what’s the cost of those bounds checks for a real-world, production application?
A straight talk about btrfs
Blog Home Page
No-Panic Rust: A Nice Technique for Systems Programming
Can Rust replace C? This is a question that has been on my mind for many years,as I created and now am tech lead forupb, a C libraryfor Protocol Buffers. Th...
Curious lack of sprintf scaling
Some days ago I noticed that on a Mac, doing snprintf calls from multiple threads shows curious lack of scaling ( see tweet ). Replacing snprintf with {fmt} library can speed up the OBJ exporter in Blender 3.2 by 3-4 times . This could have been the end of the story, filed under a “eh, sprintf is bad!” drawer, but I…
Reducing logging cost by two orders of magnitude using CLP
Long, long ago, the amount of data our systems output to logs was small enough that we were able to retain all of the log files. This allowed our engineers to freely analyze the logs, say for troubleshooting our systems or improving applications. But as Uber's business grew rapidly, the amount of data being logged…
Run OpenBSD on DigitalOcean for $4/month
My homepage now runs on OpenBSD with httpd(8) and Let's Encrypt via acme-client(1) . I previously hosted it on GitHub Pages and then eventually moved to Cloudflare Pages because both options were free and easy. Free and easy is cool, and I understand that writing software full-time leaves us wanting absolutely nothing…
How discord stores billions of messages (2017)
We decided early on to store all chat history forever so users can come back at any time and have their data available. This is a lot of data: how do we do it?
Optimizing Postgres table layout for maximum efficiency
Introduction When modeling a Postgres database, you probably don’t give much thought to the order of columns in your tables. After all, it seems like the kind of thing that wouldn’t affect storage or performance. But what if I told you that simply reordering your columns could reduce the size of your tables and…