Learning about PCI-e: Driver and DMA
Creating a simple driver for a simple PCI-e device (in QEMU)
Topics /
The most popular blog posts about systems & performance on Hacker News. 4,387 posts.
Creating a simple driver for a simple PCI-e device (in QEMU)
The AI surge has DRAM producers like Micron focus on HBM (High Bandwidth Memory) to serve AI hyperscalers over the DRAM (Dynamic Random Access Memory) used by ordinary consumers and small businesses. Consequently, for instance, servers which used to cost $2500 on Newegg now cost $5000. RAM alone is $2500 now.
Fixing common Java anti-patterns took an app from 1,198ms to 239ms. Eight patterns that compile fine and pass code review but silently drain CPU and balloon heap, with benchmarks and code fixes for each
Some new minor leap second drama is coming up, and for once we can
Reading how copy-paste works from the Wayland specification is non-trivial unless you understand a lot of how desktop computing works and Wayland internal. It took me quite a while to figure it all out, though once you get there, it seems quite obvious.
Many have observed that today's computers are distributed systems implementing the abstraction of the shared-memory multiprocessor. The wording in the title is from the 2009 paper " Your computer is already a distributed system. Why isn't your OS? ". Some points from that and other sources:
Differential dataflow is a library that lets you write simple dataflow programs and a) then runs them in parallel and b) efficiently updates the outputs when new inputs arrive. Compared to competition like spark and kafka streams , it can handle more complex computations and provides dramatically better throughput and…
I recently changed jobs and found myself in a position where I would need to do a lot of work on remote machines. Since I am Emacs user, the most common way to do this is using TRAMP (Transparent Remote access, Multiple Protcol). TRAMP is an Emacs package that let’s you treat a remote host like a local system, similar…
Unix counts time as seconds since the epoch. Seems straight forward. What could possibly go wrong?
DNS servers often have to convert DNS names to their canonical lower case form. BIND has to do so a bit more than most because it tries to preserve the case of DNS names rather than canonicalizing them.
When Windows NT was first being developed, one of the goals was to make the kernel separate from the programming interface. NT was originally intended to be the successor to OS/2 but Microsoft also…
There’s fast and there’s fast. This post is about Anna*, a key/value database design from our team at Berkeley that’s got phenomenal speed and buttery smooth scaling, with an unpr…
systemd Shutdown Units
Mistakes and lessons from a real-world feature performance optimizations: from API usage to advanced data structures, from bit hacks to CPU-friendlier code.
Updated (February 07 2013): If you enjoy this article, you may also find the more academically-inclined article The Impact of Meta-Tracing on VM Design and Implementation interesting.
Fuzz testing decades-old software can turn up some curious behaviors
I always love when I find a really dumb solution that works reliably to fix a problem that should never really be a problem in the first place. But having worked with audio devices before—though nothing nearly as complex as the AirPods—I am willing to cut Apple some slack in building a seamless aural experience with…
Linux on a 486SX A year or two ago, I came into posession of a 1993 Compaq Presario 425. It's a Mac-ish all-in-one with a 14" color (S?)VGA screen capable of 800x600 in full 256-color glory. On the inside it features a 25MHz i486SX (the sort without a floating-point unit), paired with 20MB of RAM - a significant…
The bouncing DVD logo is a fun and easy coding project. Watching Daniel Shiffman code it in p5.js is one of my earliest programming memories. However, the naive solution is far from optimal.
This week we discussed the IPFS whitepaper by Juan Benet in my Distributed Systems Seminar. Remember peer-to-peer systems? IPFS is "pe...
In software, it is common to represent time as a time-stamp string. It is usually specified by a time format string. Some standards use the format %Y%m%d%H%M%S meaning that we print the year, the month, the day, the hours, the minutes and the seconds. The current time as I write this blog post would be … Continue…
I started working on this on June 20th mainly out of curiosity: I had heard that Firecracker had PVH boot support (which was in fact mistaken!) and I knew that FreeBSD could boot in PVH mode from Xen, so I wondered just how hard it would be to get FreeBSD up and running. Not impossible, as it turned out, but a bit…
Has this ever happened to you? You want to look at a JSON file in your terminal, so you pipe it into jq so you can look at it with colors and stuff. That’s a useless use of cat. …oh hey cool bear....
When the topic of Rails performance comes up, it is commonplace to hear that the database is the bottleneck, so Rails applications are IO-bound anyway, hence Ruby performance doesn’t matter that much, and all you need is a healthy dose of concurrency to make your service scale. But how true is this in general?
Update: As of Sunday morn...
I think I should blog more about random troubleshooting sessions, if nothing else it will remind me what steps I took when it inevitably happens again!
In the field of computer science, the Paxos algorithm is notorious for how difficult it is to understand. I had to learn the Paxos algorithm in my distributed systems class. I even have "implemented" it by translating Leslie Lamport's TLA+ to Python. But I didn't understand it until much much later.