I do systems research at the junction of Networking, Systems, Storage
and Distributed Systems and recently my work has been heavily focused on an
area called rack-scale computing.Over
the years I have worked in several areas, including structured overlays or
Distributed Hash Tables (DHTs), wireless routing protocols and even Robot
Football (RoboCup’98). I worked on one of the first DHTs, called Pastry, and
the 2001 paper on Pastry written with Peter Druschel was awarded the "Middleware'2011 10-year
best paper award".

Several things I worked on have passed over from research to the wider
world in one way or another - for example the work on Pastry directly
contributed to both the Windows DRT
API and the related Windows PNRP API (the former even includes a leaf set).LiveStation licensed some of
our P2P work around Pastry and SplitStream. Some of the work described in our
IOFlow paper (SOSP’13) around opening up the storage stack and providing QoS
primitives in the storage stack resulted in the SMB Bandwidth Limiting feature
in Windows Server 2012 R2, and also inspired the end-to-end Storage QoS feature
in Windows Server vNext (see
blog posting).

My current research effort is focused on creating the
technologies and systems that will underpin future cloud- based computing
platform, and in particular rack-scale computing. This started with thinking
about rack-scale network interconnects (in the CamCubeproject) which explored direct-connect
topologies where the centralized top of rack switches are removed and instead
servers or processors perform packet routing, thereby distributing the top of
rack functionality across the servers or processors. The AMD SeaMicro fabric
compute systems and other such systems, are now commercially available and use
direct connect networks, at the sort of scales we were experimenting with in
CamCube.

This led us to start Rack-scale
computing - where we think about the rack as the unit of deployment and design
– why do we think in terms of 1U or 2U when we deploy racks in data centers
that are 44U or bigger? We think about co-designing all the resources in the
rack, including networking, power, mechanical, compute, software and cooling
etc. One of the first concrete rack-scale platforms we have built is a cold
storage rack-scale system called Pelican, designed to provide storage for cold
data, e.g. data that is written once and then read rarely. Pelican uses
right-provisioning, and has a converged design: the power, cooling, hardware
and software are all co-designed. We have demonstrated how to build a cold
storage system that much lower capital and operating expenses for storing cold
data.

The process of building our first
rack-scale computer has taught us two primary lessons: first, it is hard to
understand the design space when co-designing so many resources, and small
changes in single resources can have significant impact on the overall design.
This has led us to begin to try and build tools that can synthesize software
stacks for rack-scale computers as well as tools that aid in the development of
rack-scale computers, examples of these tools are Flamingo, that synthesize
cold storage stacks, and Heron, a tool that automatically generates a small set
of rack designs derived from a base design. Secondly, is that adapting hardware
configurations to workloads can yield significant cost savings, but with the
loss of generality. Racks today are designed with the resources for peak
workloads, be that power, cooling, compute etc to support this generality. This
has driven us to consider how we can build rack components which are adaptable
to workloads (on the timescale of seconds to minutes), providing potentially
better performance for those workloads compared to a general rack, but with the
costs benefits of having resources right-provisioned rather than provisioned
for a mythical peak performance.

For the last 16 or so years I have been working as a
researcher at Microsoft Research in Cambridge, UK where I am now a Principal
Researcher and lead the Systems and Networking Group. My research interests are
broad, covering the spectrum of systems, distributed systems, storage and
networking. In May of 2010 I was elected as a Fellow of the British Computer
Society. I received an MEng degree in Computer Systems and Software Engineering
in 1993 from the University of York, UK, and a DPhil degree in Computer Science
in 1997 also from the University of York, UK.

In 1996 I moved to the Computer Laboratory at Cambridge
University, UK as a Research Associate and then moved to the Laboratory for
Communications Engineering in the Engineering Department, Cambridge University,
as a Senior Research Associate. During my time at Cambridge University I was a
consultant for the Olivetti and Oracle Research Laboratory (ORL) (which became
the AT&T Research Cambridge in 1998 and has now sadly closed). In
1999 I moved to Microsoft Research Ltd in Cambridge, UK.