Monday, December 17, 2007

Virtualization == Increased Latency?

An interesting quote that caught my eye while reading about the NYSEs replacement of UNIX servers with Linux (nothing really new there since many of my financial clients started on that 5+ years ago) was this:

One technology that the NYSE isn't adopting so eagerly is server virtualization, which comes with a system latency price that Rubinow said he can't afford to pay. In a system that is processing hundreds of thousands of transactions per second, virtualization produces "a noticeable overhead" that can slow down throughput, according to Rubinow. "Virtualization is not a free technology from a latency perspective, so we don't use it in the core of what we do," he said.

Charles King, an analyst at Pund-IT Inc. in Hayward, Calif., believes there is a broader concern among IT managers about virtualization overhead and its impact on transaction processing. "It's one of the reasons why even the staunchest advocates of x86 virtualization recommend extensive testing prior to moving systems into production," King said.

I haven't heard this particular concern until now, but I can imagine it to be a big one since one thing you will hear talked about again and again and again if you work on trading systems is "low latency".

So what can be done to reduce latency in a virtualized environment? Depends on how much you're prepared to spend.
  • Software virtualization like VMWare or Parallels is likely to incur some extra latency above native-run applications, even though they take advantage of recent hardware virtualization hooks. In theory the more powerful the hardware the lower the latency.

  • The top of the line virtualization (i.e. very expensive) offering is probably still Azul. This is a hardware platform for running virtual machines across a pool of Azul "appliances". The hardware has been optimized for application context switching, large memory heaps, etc. Azul like to call their offering "application virtualization" and products like VMWare are called "OS-level virtualization".

No comments: