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...
Topics /
The most popular blog posts about systems & performance on Hacker News. 6,942 posts.
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...
We describe a systematic approach for replacing locks with tasks. In this approach thread blocking is replaced by properly scheduling of tasks.
VPR (pronounced “Viper”) is Nordic Semiconductor’s first RISC-V processor, landing in the new nRF54H and nRF54L lines of SoCs after their initial announcements in April and October of 2023 respectively. Readers of this blog are familiar with my long-running obsession interest in RISC-V (see my RISC-V Tips and RISC-V…
You likely know I like the ZFS filesystem a lot. ZFS stores the files in B-trees in a similar fashion as InnoDB stores data.
In this article, you will learn about some OpenBSD features you may not know about
Update theres a more recent post that expands further on where to start optimizing specific queries, and of course if you want to dig into optimizing your infrastructure High Performance PostgreSQL is still a great read For many application developers their database is a black box. Data goes in, comes back out and in…
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 …
Recently I came across two great articles on the Pusher blog: Low latency, large working set, and GHC’s garbage collector: pick two of three and Golang’s Real-time GC in Theory and Practice . The articles tell the story of how Pusher engineers reimplemented their message bus. The first take was done in Haskell. During…
This is a follow up post that dives into how we managed to achieve such huge performance gains for time series (among other things), and why it was so hard in the first place.
A blog mostly about Clojure programming
Create an infrastructure for parallel computation in PostgreSQL. This does four basic things. First, it provides convenience routines to coordinate …
In January 2017, we presented results to the European Commission on a FP7project called SyncFree, where we were tasked with a large-scale evaluationof the Lasp programming system. In this evaluatio...
A transcript of the talk I given in 2018 about the state of embedded programming in Rust.
Recently I've been playing around with FreeBSD in a virtual machine. The reason for this is that (if all goes well) some time in December my new Framework laptop will arrive, replacing my current X1 Carbon that is starting to show signs of old age (e.g. a keyboard where certain keys don't always work). Framework in…
Neon’s serverless driver redirects the PostgreSQL TCP wire protocol over WebSockets. This makes ordinary, fully-functional PostgreSQL connections accessible from new environments — including serverless platforms like Cloudflare Workers and Vercel Edge Functions. A key feature of these environments is that state is not…
AdamW on Linux and more
Hey TrueOS Community! I just wanted to take a few minutes to address what some of you may have already guessed. With a heavy heart, the TrueOS Project’s core
A retrospective on a few months of working on a graduate degree in computer science.
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…
Launched in 1998, the 380Z was one very fine ThinkPad. It was the last ThinkPad to come in the classic bulky and rectangular form factor. It was also one of the first to feature a huge 13.3" TFT display, powerful 233MHz Pentium II, and whopping 160 megs of RAM.
How quickly can we use brute force to guess a 64-bit number? The short answer is, it all depends on what resources are available. So we’re going to examine this problem starting with the most naive approach and then expand to other techniques involving parallelization. We’ll discuss parallelization at the CPU level…
Get immediate access to Gremlin
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.
In distributed systems, one of the fundamental challenges is knowing whether a node or service is alive and functioning properly. Unlike monolithic applications, where everything runs in a single process, distributed systems span multiple machines, networks, and data centers. This becomes even glaring when the nodes…