July 20–24, 2015
Portland, OR

High performance servers without the event loop

Dave Cheney (VMWare)
2:30pm–3:10pm Wednesday, 07/22/2015
Scale Portland 255
Average rating: ***..
(3.82, 11 ratings)
Slides:   1-PDF 

Prerequisite Knowledge

Experience in the issues around designing and scaling network servers is expected. Experience with Go is a plus, but not expected.


Conventional wisdom suggests that the key to high performance servers are native threads, or more recently event loops.

Neither solution is without its downsides. Threads carry a high overhead in terms of scheduling cost and memory footprint. Event loops ameliorate those costs, but introduce their own requirements for a complex callback driven style.

Go is a general purpose programming language in use in a wide range of domains, and is especially suited to writing network software. Go was introduced in 2009 with the explicit goal of helping programmers write programs that could solve problems of Google’s scale, and that means writing high performance servers.

This talk will focus on the features of the Go language and runtime environment, that (mostly) transparently allow programmers to write simple, high performance network services without resorting to native threads or event loop-driven callbacks.

Photo of Dave Cheney

Dave Cheney


David Cheney has been involved with the Go project for over five years. He is a regular contributor to the language, focusing on Go on ARM processors. He has previously ported Go to freebsd/arm, solaris/amd64, and is working on a port to linux/arm64. David writes frequently about Go on his blog, http://dave.cheney.net/. David has spoken locally and internationally — full details can be found at http://dave.cheney.net/about. Together with Andrew Gerrand, David runs the Sydney Go User’s group.