Topics /
Systems & Performance
The most popular blog posts about systems & performance on Hacker News. 6,943 posts.
Hunting Down a Go Runtime Bug on 32-Bit Embedded Systems
A customer's Go application kept crashing on a 32-bit embedded Linux system. We traced the fatal netpoll error to a pointer aliasing bug in the Go runtime.
0x01 – Killing Windows Kernel Mitigations
This post was made possible through hard work and determination. Do not feel frustrated if this stuff does not click immediately and remember, the source of truth will always be the source code. For us, our source code is raw assembly. That said it’s important you understand these techniques in detail because when…
How to write a rootkit without really trying
We open-sourced a fault injection tool, KRF, that uses kernel-space syscall interception. You can use it today to find faulty assumptions (and resultant bugs) in your programs. Check it out! This post covers intercepting system calls from within the Linux kernel, via a plain old kernel module. We’ll go through a quick…
Writing a Debugger from Scratch: Stacks
(New to this series? Consider starting from part 1) At the end of the last post, DbgRs could finally set breakpoints. That was the last really critical feature needed for controlling execution of a program. Now that it can stop on an arbitrary function or code location, the next step is to find more information about…
A 40ms Go garbage collector pause caused by swap
I’m writing this so you don’t slap your forehead like I almost did when I decided to run swap in production to absorb memory spikes.
Nix Survival Mode: macOS upgrades won't break Nix anymore
For years, macOS upgrades have broken Nix. We've updated the Determinate Nix Installer to ensure that this no longer happens, eliminating yet another annoyance for macOS users.
.NET on Linux: What a Contrast
Almost five years ago I wrote a brief history about .net on non-Windows platforms . I stumbled over that article now and it resurfaced traumatic memories of navigating .net development on Linux and MacOS.
Systemd is not portable and what this means for our ports
This blog post is the third of a series of posts dealing with the results of the Debian systemd survey . I intend to give a presentation at DebConf 2013, too, so you could either read my posts, or watch the talk, or both :-).
Envisioning a Simplified Intel Architecture
Intel investigated architectural enhancements and modifications for a 64-bit mode-only architecture.
Select(2) is fundamentally broken
In a previous blog post we discussed a brief history of the select(2) syscall . The article concludes that some I/O multiplexing was necessary to do console emulation, games and non-trivial TCP/IP applications.
A little bit of the one-time MacOS version still lingers in ZFS
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…
Web Performance Profiling: Google.com
How is Google so fast? It’s so fast we take it for granted. It feels instant from the time you search to when results are displayed. What can we learn abou...
How the Hourglass Won
The Internet's architecture is viewed as an hourglass: broad application support at the top, narrow waist (IP), wide choice of links below IP
The problem with invariants is that they change over time
Cliff L. Biffle blogged a great write-up of a debugging odyssey at Oxide with the title Who killed the network switch? Here’s the bit that jumped out at me: At the time that code was written…
ARM and Intel have different performance characteristics: a case study
In my previous post, I reviewed a new fast random number generator called wyhash. I commented that I expected it to do well on x64 processors (Intel and AMD), but not so well on ARM processors. Let us review again wyhash: uint64_t wyhash64_x; uint64_t wyhash64() { wyhash64_x += 0x60bee2bee120fc15; __uint128_t tmp; tmp…
Picking Glibc Versions at Runtime
Using a glibc version that is different from the system-provided one shouldn't require the use of containers, as I recently heard someone claim. Let's take a look at how dynamic linking works and what the options are.
The Uselessness of "Fast" and "Slow" in Programming
Every field of human activity has its unique characteristics, and programming is no exception.
Real VT102 Emulation with MAME
As a software developer, I spend a lot of time using the terminal, or more properly, a “terminal emulator”. Tools like iTerm2 , or PuTTY , or GNOME Terminal , or the classic xterm and rxvt are all “terminal emulators”; they take raw text and formatting instructions and interpret them to display pretty text on the…
NVMe SSD boot with the Raspberry Pi 5
In my video about the Raspberry Pi 5, I mentioned the new external PCIe port makes it possible to boot the standard Pi 5 model B directly off NVMe storage—an option which is much faster and more reliable than standard microSD storage (even with industrial-rated cards!). Enabling NVMe boot is pretty easy, you add a…
Streaming joins are hard
Why are streaming joins so tricky? Discover the hidden complexities of real-time data, and learn how to tame the infinite stream!
TimescaleDB 2.7 vs. PostgreSQL 14
TimescaleDB expands PostgreSQL query performance by 1000x, reduces storage utilization by 90%, and provides time-saving features for time-series and analytical.
Why good external SSDs are faster with Apple Silicon
Why an Intel Mac’s up to 40 Gb/s from Thunderbolt 3 is less than an Apple silicon Mac’s up to 40 Gb/s from USB4, and how you can benefit from it.
Wayland and LVGL on PinePhone with Ubuntu Touch
Learn about Wayland and Ubuntu Touch on PinePhone... And how we build PinePhone Apps with LVGL
Streaming Video and Audio with Low Delay
Data sent over the Internet will traverse a large number of smaller links. The combination of these links forms a path from the sender to the receiver. Sometimes data is lost when it traverses this path. For video and audio streams such losses can lead to playback glitches if not corrected.