Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 6,949 posts.
LMDB: Intel Optane SSD Microbenchmark
Since the point of these tests is to explore the performance of the Optane SSDs, the tests are configured much like the previous ondisk benchmark, using a database approximately 5x larger than RAM, to minimize the impact of caching in RAM and force the storage devices to be exercised. However, there are some twists to…
The real cost of random I/O
How good is the random_page_cost default, and should you lower it on modern flash storage?
ScyllaDB is Moving to a New Replication Algorithm: Tablets
How moving from Vnode-based replication to tablets helps dynamically distribute data across the cluster, ultimately increasing ScyllaDB’s elasticity.
Understanding consensus and Paxos in distributed systems
A whirlwind tour on acheiving agreement in a distributed system
MkLinux and the pimped-out Apple Workgroup Server 9150
As is typical here in the Floodgap lab, it all started so innocently: rebuilding a flaky Apple Workgroup Server 9150, the odd duck of the Wo...
Faster CRC32-C on x86
Computing the CRC-32C of a 4KB buffer on a modern x86 chip can be done as a simple loop around the crc32 instruction:
The PDP-7 Where Unix Began
Serial Number of First Unix System In preparation for a talk on Seventh Edition Unix this fall, I stumbled upon a service list from DEC fo...
The case of a program that crashed on its first instruction
Didn't even make it out of the gate.
eBPF for tracing how Firefox uses page faults to load libraries
Modern browsers are some of the most complicated programs ever written. For example, the main Firefox library on my system is over 130Mbytes. Doing 130MB of IO poorly can be quite a performance hit, even with SSDs! :). Few people seem to understand how memory-mapped IO works. There are no pre-canned tools to observe…
Clang Static Analyzer and the Z3 constraint solver (2022)
Notes on using the Z3 constraint solver with the Clang Static Analyzer
10Gbit/s full TX wirespeed smallest packet size on a single CPU core
The Linux Kernel Network Stack Scalability, mitigating DDoS attacks firewalling iptables netfilter connection tracking (conntrack)
Using Go for Scalable Operating System Analytics
At Kolide, part of what we do is build a client-server system that facilitates the management of large, isolated installations of an open-source tool called osquery. While I’ve written and spoken about osquery in the past, in this post I want to focus on how we use Go to solve many of the challenges we face building…
Deterministic simulation testing for async Rust
How S2 uses deterministic simulation testing for async Rust to find distributed-systems bugs before they reach production.
Call Me Maybe: Percona XtraDB Cluster
Percona’s CTO Vadim Tkachenko wrote a response to my Galera Snapshot Isolation post last week. I think Tkachenko may have misunderstood some of my results, and I’d like to clear those up now. I’ve ported the MariaDB tests to Percona XtraDB Cluster, and would like to confirm that using exclusive write locks on all…
PyPy IO improvements
Hello everyone! We've wrapped up the Warsaw sprint, so I would like to describe some branches which have been recently merged and which i...
Exploring .NET Core platform intrinsics: Part 4 – Alignment and pipelining
You’ve implemented some of your performance critical code using the new platform intrinsics API. The code is now running 10x or even 100x faster than before, and you might think that it can’t get any faster. This post will show you some less obvious (but almost universally applicable) techniques for improving the…
The Raspberry Pi 4 has a fan now – the Case Fan
Last year, I wrote a blog post titled The Raspberry Pi 4 needs a fan. And in a video to go along with that post, I detailed the process of drilling out a hole in the top of the official Pi 4 case and installing a 5v fan inside. But that solution wasn't great. The fan was a little loud and annoying, and would stay on…
What is gained and lost with 63-bit integers? (2014)
Almost every programming language uses 64-bit integers on typical modern Intel machines. OCaml uses a special 63-bit representation. How does it affect OCaml?
Async hazard: MMAP is blocking IO
Memory-mapping a file is convenient, but it's a hazard when used with async/await concurrent code: it means a "simple" memory index does blocking IO.
Systemd has been a complete, utter, unmitigated success
Eleven init systems enter, one init system leaves.
SQLite (with WAL) doesn't do `fsync` on each commit under default settings
SQLite doesn’t do fsync unless specified.
The Syslog Hell
Syslog. You’ve probably heard about that, especially if you are into monitoring or security. Syslog is perceived to be the common, unified way that systems can send logs to otherContinue reading
Latches in C++20
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.