3 ms·
1 vCPU instances do not simultaneously share cores with other customer instances via SMT (Intel Hyper-Threading Technology). A core can be sequentially time sli
by _msw_ 8y ago
1 vCPU instances do not simultaneously share cores with other customer instances via SMT (Intel Hyper-Threading Technology). A core can be sequentially time sliced between customer instances when you use a fractional (m3.medium) or burst (T2 instances) CPU instance type.
https://aws.amazon.com/ec2/instance-types/ https://aws.amazon.com/ec2/instance-types/ includes a note that provides some additional information about when vCPUs utilize Intel HT Technology:
Each vCPU is a hyperthread of an Intel Xeon core except for T2 and m3.medium. (emphasis added)
https://aws.amazon.com/ec2/virtualcores/ https://aws.amazon.com/ec2/virtualcores/ provides a table of the number of cores allocated per instance. Notice that an instance like m5.large that has 2 vCPUs and 1 core. An instance like t2.small has 1 vCPU and 1 core.
Disclosure: I work for AWS
- h4b4n3r0 8y agoUm, no. If I schedule a micro instance in a particular zone and nothing else, for the duration of my timeslice the VM will have to monopolize the core. Optimal use of vCPUs would demand that two VM threads get scheduled to the core to take advantage of HT, which Google says it won’t do. Timeslicing doesn’t solve this problem. At least that’s my reading of what they said.
- _msw_ 8y agoRe-read what I wrote above. It covered both simultaneous and sequential sharing. Here is the part you are concerned about: instances do not simultaneously share cores with other customer instances via SMT.
- h4b4n3r0 8y agoRe-read what I wrote. Imagine a machine with 8 cores and 16 hyperthreads. Now imagine you need to optimally use the execution ports in each core. To do that you would need to have 16 VM threads all feeding the ports simultaneously, 2 per core. If all your workloads on that machine are from different customers, you can’t do more than 8. If you timeslice more than 8, then the question is, what is it that you’re selling as a vCPU? If it’s a timesliced core, then it’s not what they say they’re selling (a hyperthread).
- cthalupa 8y agoYou: > If it’s a timesliced core, then it’s not what they say they’re selling (a hyperthread). vs. _msw_: > A core can be sequentially time sliced between customer instances when you use a fractional (m3.medium) or burst (T2 instances) CPU instance type. AWS instance types page ( https://aws.amazon.com/ec2/instance-types/ https://aws.amazon.com/ec2/instance-types/ ): > Each vCPU is a hyperthread of an Intel Xeon core except for T2 and m3.medium.
- h4b4n3r0 8y agoNot in Google’s case. There vCPU == hyperthread. To quote https://cloud.google.com/compute/docs/machine-types https://cloud.google.com/compute/docs/machine-types: "For the n1 series of machine types, a vCPU is implemented as a single hardware hyper-thread". One more area where Google is more explicit. Only their partial vCPU instances are timesliced: "Shared-core machine types provide one vCPU that is allowed to run for a portion of the time on a single hardware hyper-thread on the host CPU running your instance".
- Kliment 8y agotimeslicing works fine, you just have to flush the cache when switching
- h4b4n3r0 8y agoI’m not disputing that. I’m just saying that for the specific case of jobs with 1 vCPU which are all from different users you can only schedule half the billable capacity.
- Dylan16807 8y ago> Optimal use of vCPUs would demand that two VM threads get scheduled to the core to take advantage of HT It would. So those cores won't be used optimally. No big deal.
- smolder 8y agoYeah, and the throughput of HT threads on an already busy core was not that high, last I checked.