3 ms·
I'm a little bit surprised that Amazon are mapping vCPUs to HyperThreads, instead of to cores. It seems to me like, if this is targeted at compute-intensive wo
by CaliforniaKarl 9y ago
I'm a little bit surprised that Amazon are mapping vCPUs to HyperThreads, instead of to cores. It seems to me like, if this is targeted at compute-intensive workloads, that it may be overcommitting a bit. Or is there recent research saying that an HT thread is equivalent to a core for compute-intensive workloads?
- tyingq 9y agoI think it's just as simple as it gives the appearance of more for less. A marketing decision, not a technical one. And, since the competition adopted the same terminology, it's now a quasi standard to call them vcpus.
- tedivm 9y ago> Or is there recent research saying that an HT thread is equivalent to a core for compute-intensive workloads? This is a fun question. Processors that have hyperthreading duplicate the parts of the CPU needed to maintain state, but they don't duplicate the parts that run the actual logic. So if you compare a single core hyperthreaded processor with a dual core processor without hyperthreading the dual core one will be faster. However it gets a bit more complicated than that. Oftentimes processors sit idle while waiting for the rest of the system to catch up- for instance it may have to wait for memory to get loaded from RAM. Processors with hyperthreading see a boost in performance here because they can run the second thread while waiting for the operations needed to run the first thread- thus making these processors about 30% more efficient. So while more cores are definitly better, if you are comparing two processors with the same number of cores and all else is equal the ones with hyperthreading will perform better. One thing to note is that AWS provides vCPUs in pairs, so even though they are giving you the number of threads you can always be sure you're getting individual cores along with them.
- _msw_ 9y ago"CPU" is commonly used in operating systems to describe any logical processor, no matter if it is a thread from a core for processors that implement simultaneous multithreading (like Intel Hyper-Threading Technology). vCPU is the same concept, it's a logical unit of execution. Since Intel processors have HTT and many workloads benefit from it, it makes sense to map the underlying physical execution units 1:1 as vCPUs. For c5.18xlarge, all of the logical processors of the system (72 threads on 36 cores) are provided as vCPUs. If a workload does not scale well with threads, you can essentially turn them off by disabling CPUs in the OS, like maxcpus=(vcpus/2) for Linux based OSes. (e.g., maxcpus=36 for c5.18xlarge).