IDIV DoS (INT_MIN / -1)
A little fun for the last day of 2012: how to crash a program via division? x86’s IDIV instruction traps not only on division by zero, but also on INT_MIN / -1 (signed integer overflow).
Readings in distributed systems
This post is a work in progress.Inspired by a recent purchase of the Red Book, which providesa curated list of important papers around database systems, I’ve decidedto begin assembling a list of im...
Queueing in the Linux Network Stack
Things that interest me
Fixing Unix Filenames (2012)
This article will try to convince you that adding some limitations on legal Unix/Linux/POSIX filenames would be an improvement. Many programs already presume these limitations, the POSIX standard already permits such limitations, and many Unix/Linux filesystems already embed such limitations so it'd be better to make…
Performance of Rust and Dart in Sudoku Solving
Introduction About two years ago I evaluated the performance of ~20 compilers and interpreters on sudoku solving, matrix multiplication, pattern matching and dictionary operations. Two years later,…
GCC and C vs C++ Speed, Measured
With the imminent release of gcc 4.8, GCC has finally switched to C++ as the implementation language. As usual, LWN has excellent coverage. Those with long memories will remember Linux trying to use g++ back in 1992 and retreating in horror at the larger, slower code. The main benefit was stricter typechecking…
Future instruction set: AVX-512
Software optimization resources | E-mail subscription to this blog | www.agner.org
Writing a full-text search engine using Bloom filters
A few minutes ago I came across a Hacker News post that detailed a method of adding search to your static site. As you probably know, adding search to a static site is a bit tricky, because you can’t just send the query to a server and have the server process it and return the results. If you want full-text search…
PingFS
shysecurity blog
A Memory Comparison of Light Linux Desktops
In my previous article I’ve tried to investigate the RAM memory requirements for running some of the most common light window managers and desktop environments available in the Linux world. P…
Update on Go 1.1 crypto performance
Some time ago I integrated OpenSSL's MD5, SHA1 and RC4 functions into Go because Go's native implementations were slow. The Go team has ma...
SSH uses four TCP segments for each character you type
Every time we press a key in an interactive SSH session, the SSH Client sends that keystroke as a TCP segment to the SSH Server. Here is a Wireshark …
The Law of Leaky Abstractions (2002)
There’s a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP…
HTTP Archive: jQuery
A recent thread on Github for html5-boilerplate discusses whether there’s a benefit from loading jQuery from Google Hosted Libraries , as opposed to serving it from your local server. They referenced the great article Caching and the Google AJAX Libraries by Steve Webster.
Jepsen: On the perils of network partitions
This article is part of Jepsen , a series on network partitions. We’re going to learn about distributed consensus, discuss the CAP theorem’s implications, and demonstrate how different databases behave under partition.
Jepsen: Postgres
Previously on Jepsen , we introduced the problem of network partitions . Here, we demonstrate that a few transactions which “fail” during the start of a partition may have actually succeeded.
The Biggest Myths
Posts and writings by Lennart Poettering
Boundaries
This talk is about using simple values (as opposed to complex objects) not just for holding data, but also as the boundaries between components and subsystems. It moves through many topics: functional programming; mutability's relationship to OO; isolated unit testing with and without test doubles; and concurrency, to…
Jepsen: Redis
Previously on Jepsen , we explored two-phase commit in Postgres . In this post, we demonstrate Redis losing 56% of writes during a partition.