I was really surprised to find this. I was trying to get an idea of the difference in performance between my current m1.large instances and the new m3.large instances. First, I used to CPU-Z to see what it detected.
Okay we’ve got:
- An Xeon E5-2650 running at a detected 1.8 Ghz
- 2 CPU cores with 1 thread each.
Next I spun-up an m3.large and run CPU-Z.
Here we have:
- Xeon E5-2670 v2 running at a detected 2.5 Ghz
- 1 CPU core with 2 threads.
One core with two threads?
That’s not what I was expecting. Now I wanted to know what Amazon was saying they’re providing.
As you can see in the two above screen shots, both m1.large and m3.large have two vCPUs. A vCPU to me means a processor core. So what gives? This must mean that I’m just making an incorrect assumption and should find the actual definition. Well, I searched all over aws.amazon.com and “vCPU” is subtly redefined depending on the instance type (which I find misleading).
Link: https://aws.amazon.com/ec2/instance-types/ . It turns out that a vCPU does not guarantee to you anything more than a single CPU thread.
Here are two other blog posts who discovered the same thing and went into a little more depth: