Inside Cloud Spanner and the CAP Theorem
Building systems that manage globally distributed data, provide data consistency and are also highly available is really hard. The beauty of the cloud is that someone else can build that for you.
Coreboot and Skylake, Part 2: A Beautiful Game
Purism makes premium phones, laptops, mini PCs and servers running free software on PureOS. Purism products respect people's privacy and freedom while protecting their security.
Memory bandwidth
Absolute memory bandwidth figures tend to look fairly large, especially for GPUs. This is deceptive. It’s much more useful to relate memory bandwidth to say the number of clock cycles or inst…
Docker in Production: An Update
The previous article Docker in Production: A History of Failure was quite a hit. After long discussions, hundreds of feedbacks, thousands of comments, meetings with various individuals and major pl…
Avery’s laws of Wi-Fi reliability
Hello everyone! After many years of using a massively hacked-up version of dcoombs's NITLog page generator to host these pages, I've become,...
How the .NET Runtime Loads a Type
It is something we take for granted every time we run a .NET program, but it turns out that loading a Type or class is a fairly complex process.
How to Print Integers Really Fast
Paul Khuong's personal blog. Some Lisp, some optimisation, mathematical or computer.
Hybridizer: High-Performance C# on GPUs
Hybridizer is a compiler from Altimesh that lets you program GPUs and other accelerators from C# code or .NET Assembly. Using decorated symbols to express parallelism, Hybridizer generates source code…
Rumors of Cmd’s death have been greatly exaggerated
This post is in response to a story published on December 6th 2016 by ComputerWorld titled "Say goodbye to the MS-DOS command prompt" and its follow-up
Unreasonable Ineffectiveness of Machine Learning in Computer Systems Research
In 1960, the physicist Eugene Wigner wrote a famous essay titled “The Unreasonable Effectiveness of Mathematics in the Natural Sciences” in which he explored the question of why mathematics is so r…
APFS – A Backup Software Developer’s Perspective
A backup-software developer's deep dive into Apple's APFS file system — snapshots, cloning, space sharing, and what it all means for reliable Mac backups.
How copying an int made my code 11 times faster
I have moved off Medium to a personal blog. Click here for the updated post.
DragonFly BSD 4.8 released
DragonFly version 4.8 brings EFI boot support in the installer, further speed improvements in the kernel, a new NVMe driver, a new eMMC driver, and Intel video driver updates.
Profiling Go
Techniques and tools for profiling Go applications including pprof, benchmarks, and memory management analysis.
A deep dive into Multicore OCaml garbage collector
I recently gave a talk on the internals of multicore OCaml GC at Jane Street offices in NYC. The slides from the talk are available online . But I felt that the slides alone aren’t particularly edifying. This post is basically the slides from the talk annotated with notes.
Why is memory reclamation so important for lock-free algorithms?
As it so happens, object lifetime tracking (or Memory Reclamation as I prefer to call it) is the current most difficult open problem in sha...
Finding the Lost Vikings – Reversing a Virtual Machine
After having fun reverse engineering the Comprehend Adventure game (Recomprehend) I was looking for a new DOS game reverse engineering project. Over the years various people have reversed a lot of …
How should you build a high-performance column store for the 2020s?
Though most relational databases (like MySQL) are "row oriented", in that they keep rows stored together... experience has taught us that pivoting the data arrow so that columns, and not rows, are stored together can be beneficial. This is an old observation that most experienced programmers know about as the…
Why does one Nginx worker take all the load?
Scaling up TCP servers is usually straightforward. Most deployments start by using a single process setup. When the need arises more worker processes are added.
Postgres performance analysis resulted in a 10x improvement in CPU use
Heap is the only digital insights platform that shows everything users do on your site, revealing the "unknown unknowns" that stay invisible with other tools. Learn about how we improved our performance and saved millions!
Leave your OS at home: the rise of library operating systems
The efficiency of Operating Systems (OSes) has always been in the spotlight of systems researchers, ever since the seminal Dijkstra’s THE multiprogramming system in early 60s. But the reason …
Delete an inline function, save 794 kB
In the previous episode of “Simple Changes to Shrink Chrome” I discussed how deleting ‘const’ from a few key locations could lead to dramatic size savings, due to a VC++ com…
FreeBSD/EC2 on C5 instances
Ever since the first EC2 instances launched — the ones which were retrospectively named "m1.small" — Amazon has relied on the Xen hypervisor. No longer: C5 instances use KVM. This sounds like it would be a problem, but in fact that change didn't bother FreeBSD at all: Now that everything uses hardware-based paging…
Why isn't memset() async-signal-safe?
Really, POSIX? Really? memset() isn't async-signal-safe? How is it not safe? … oh … that's why