Monthly Archives: February 2014

To pick the best processor for your server, a cursory understanding of how the application works is helpful. In virtulaized environments, that gets interesting because multiple applications run together on the same socket. Generalized compute clusters have their benefits, but some applications have “special needs.” Minimum support requirements could throw a wrench into your choice.

Single Threaded Applications

Multi-threaded code is challenging to write. That is why, even 10 years after multi-core processors became main stream, developers still write single threaded applications that require performance. If you are interested in the code side of this discussion, I wrote a simple post comparing single and multi threading https://nujakcities.wordpress.com/2010/11/16/single-vs-multi-threading/

If you have ever added a core to a VM and watched a process that used to run at 100% CPU on one core, now run at 50% CPU on two cores, you probably have a single threaded application. A multi-threaded process would be able to utilize all cores to 100%. Single threaded applications that cannot be upgraded to utilize multiple threads will benefit from higher clock speeds and not more cores.

Launch Date

This is the first thing I look at after I’ve flushed out any special requirements. I take the processor number from the server quote and find it on the manufacturer’s website. That way I can find out if I am looking at the latest processors. Since Moore’s law is still in play, I can be somewhat comfortable that the newer processor is going to be a lot faster in some way shape or form. If you are not comfortable jumping on the latest technology, you will also save quite a bit of money. Don’t let your hardware vendor talk about new processor features and slip an old one in the quote.

Clock Speed and Core Count

These are the two main factors. They are in the same heading because of the heat balancing act. Faster is hotter, and more cores is also hotter. We unfortunately can’t have the best of both worlds or the box will catch on fire.

If we compare two of the Q’14 high end Intel CPUs, we find the balance was found at 3.4 Ghz/6 cores and 2.8 Ghz/15cores. As a virtualization admin I see an obvious choice here going with 15 physical cores because 99% of my applications would be happier. Even if they are a single threaded applications, the additional .6GHz will be barely noticeable.

Knowing your application can come in handy when designing clusters and buying hardware. Enterprise code can sometimes be a decade old so be cautious of purchasing max cores over high GHz. You may run into more single threaded, latency sensitive application that you want to admit still exist.

If you have a need to run higher core count VMs, a higher number of physical cores per socket is best. I have a general rule of thumb to avoid creating VMs that have more vCPUs than pCores on a single socket. Even if it is a dual or quad socket server, you will see diminishing returns and sometimes problematic ready times if you are spanning a VM across several physical sockets.

Hyperthreading and Turbo

I remember owning a beige PC that had a nice button and red LED display. Press it once and the display would read 33 press it again and it would read 66. Even today, processors have an automatic turbo button however there are some caveats. Turbo won’t work if all of your cores are in high demand. If only a single core is in high demand and the others are idle, then Intel’s “Max Turbo Frequency” value kicks in.

Hyper threading sounds like a great idea but doesn’t actually perform as advertised. I like to refer to these as fake cores. With it on, your OS will see twice the cores. Sometimes they can help but I can guarantee it won’t give you a 2x performance improvement. It really depends, but I have heard ballpark estimates in the range of 25-50% performance improvement by turning on hyper-threading. So I do recommend turning this feature on, but be careful not to mix up physical core count with the hyperthreaded core count.

Cache sizes

About the only thing I understand in this field is cache is good. If some is good, more is probably better. In this area, server CPUs tend to blow Desktop CPUs out of the water. I’ll have to do some more research and testing to figure out if this value should be of great concern which buying processors.

Price

With software like SQL Server licensing by physical core, more than just the hardware costs need to be reviewed. If you are paying by the core or socket for premium software, it makes a lot of sense (and cents) to buy the best processors you can find. If you can increase the consolidation rate, you won’t need so many software licenses.

That is a big IF though. Make sure you are actually getting solid returns on high end processors. Some benchmarks have shown diminishing returns as manufacturers push the limitations. Lay it all on the table, even smaller or abstract costs like reliability, power consumption and productivity before making your decision. Most of all, have fun shopping!

Part of VMware’s VMotion process copies all the guest system’s memory from one physical host to another over the network. Snapshots and VM Suspends will force a memory checkpoint making sure there is a persisted full copy of memory on disk. The point here is that the hypervisor is very much aware of the guest’s memory.

Without the hypervisor there are a few ways to capture data in RAM needed for some serious debugging. A single process is easy, just fire up the proper bitness of task manager.

If the problem you are trying to debug doesn’t crash your computer, you have a little more reading to do. https://support.microsoft.com/kb/969028 There are several tools including a registry entry for CTRL+Scroll and a PS utility who’s name I love: NotMyFault.exe

But wait! It gets better!

The hypervisor checkpoint process. Just hit the pause button on your VM and viola. Browse the datastore and download the .vmss file. VMware has kindly written a Windows version of it’s application to handle the conversion https://labs.vmware.com/flings/vmss2core To convert this .vmss file to a windbg memory dump file just run this command

vmss2core.exe -W C:\pathtodmp\vm_suspend.vmss

You can also perform this same process using a snapshot instead. This can be an even better option to avoid downtime if your guest is still mostly working.

Now What?

Well, this is the point where I call in the experts. I generally do this to ship the file off for analysis by the developers of suspect code. As a teaser to some future posts, here are the ingredients we are going to have to collect: