Poul-Henning Kamp – Keynote at Multicore World 2013


Massive Parallel Processing in the Varnish software

Poul-Henning Kamp. Chief Architect, Varnish Software & Author (of a lot of) FreeBSD. Denmark.

The Varnish HTTP accelerator was written to show what modern MPP hardware with a modern UNIX kernel is capable of, if you stop programming like it was still the 1970-ies -as 90% of programmers worldwide still do. The answer is north of 1 million webpages per second, per machine.

Poul-Henning will talk about what Varnish taught a UNIX kernel programmer with 25 years under his belt about multiprogramming, and will share his tricks and suggestions for writing good MPP programs (that could dramatically change how you write software from now)



Poul-Henning Kamp has done weird things with computers for more than 30 years. Amongst the weird things are a IBM S/34 disassembler written in RPG-II, a PC defragmenter before Peter Norton wrote his, a LOT of FreeBSD, (including the “md5crypt” password scrambler), DARPA research on encrypted disks, microsecond timing for Air Traffic Control, and most recently the Varnish HTTP accelerator, which is used by more than half a million websites, including some of the biggest in the world. Poul-Henning is self-employed, lives in Denmark and looks forward to see the other side of the planet.



In January 2013, Poul-Henning was interviewed via email by Peter Kerr, who writes about Multicore Technology in New Zealand


1. What is Varnish software and what problem does it solve?

Varnish is a HTTP accelerator — an after-burner for webservers.

It’s main function is to act like a cache, so that you do not have to make 200 database lookups, every time somebody clicks on your newspaper frontpage or checks GeoNet.org.nz to see if the world is about to end.

But Varnish can do a lot more than just caching, it is a general purpose HTTP traffic processor and people use it to do the weirdest things.

Last I heard, almost 6% of the top 10,000 websites use Varnish, many precisely because they can use it to implement their business model at the high speeds necessary.


2. Where does parallel processing and multicore computing fit into Varnish and (sort of by definition)?

Web traffic is very parallel by nature, everybody has their own browser, so not making Varnish parallel and multicore-aware would have been downright stupid from a performance point of view.

Given the stall in CPU clock frequencies around 4 GHz, there is absolutely no way Varnish could have delivered hundred thousands of web-pages a second on a single core.


3. The way the world will run computing in the future?

Its not like we have a choice: The silicon-pushers can’t seem to make CPUs faster, so the only way to go faster is to do things in parallel.


4. What are multicore and parallel programming’s challenges, and how do we solve them?

The major challenge is that programming for parallel computing is harder: Harder to write, harder to test, harder to maintain.

When I want to scare people, I say that “In the future everybody will have to be a kernel programmer” because that is what it boils down to.


5. How might New Zealand Inc. take advantage of the revolution/evolution? (Using your ‘from the other side of the world’ viewpoint)

It probably sounds trite, but there is always solid money to be made by being competent and ahead of the crowd, and there is a lot of room in front of this crowd still.