Skip to content
Calcrivo

Hyperthreading Efficiency Calculator

Estimate effective core count gained from SMT/Hyper-Threading given a workload gain factor.

Inputs

Typically 15-30% depending on workload

Effective Core Count

10.00

Logical Cores (2× physical)

16

Effective as % of Logical Cores

62.5%

Workload Note

Mixed workloads with some stalls (branch mispredicts, cache misses) typically see moderate HT gains (20-30%), the most common real-world range.

Step by step

  1. Values used

    Physical Cores = 8; Hyper-Threading Gain (%) = 25; Workload Type = Mixed workload (typical HT gain)

  2. Effective core count

    effective_cores = physical_cores × (1 + HT_gain%)

  3. Effective Core Count

    = 10.00

  4. Logical Cores (2× physical)

    = 16

  5. Effective as % of Logical Cores

    = 62.5

  6. Workload Note

    = Mixed workloads with some stalls (branch mispredicts, cache misses) typically see moderate HT gains (20-30%), the most common real-world range.

How it works

Hyper-Threading / SMT exposes two logical CPUs per physical core, but they share the core's execution units, caches and pipeline — so the OS-visible 'double the cores' from `nproc` overstates real throughput gain. The realistic effective core count models HT as a percentage boost over physical cores (not a full doubling), and that gain factor varies significantly by workload: heavily CPU-bound code with saturated execution units gains little from a sibling thread, while workloads with frequent stalls (cache misses, branch mispredicts, I/O waits) let the sibling thread productively fill otherwise-wasted cycles.

Formula

Effective core count

effective_cores = physical_cores × (1 + HT_gain%)

P
physical cores
g
HT gain fraction (typically 0.15-0.30)

Frequently Asked Questions

Why shouldn't I treat logical cores as equivalent to physical cores for capacity planning?

Because sibling logical CPUs on the same physical core share execution units, cache and memory bandwidth rather than doubling them — a benchmark showing 2 logical cores delivering 2× a single core's throughput is the exception, not the rule. Realistic HT gains of 15-30% mean 16 logical cores from 8 physical cores behave closer to 9.2-10.4 'effective' cores for most workloads.

Should I disable Hyper-Threading for better performance?

Rarely beneficial for throughput — HT almost always adds some net gain even for CPU-bound work, just a smaller one. It's occasionally disabled for security isolation (mitigating certain side-channel/speculative-execution vulnerabilities between sibling threads) or for latency-critical workloads where predictable single-thread performance matters more than aggregate throughput.

How do I identify which logical CPUs share a physical core?

`lscpu -e` lists each logical CPU with its CORE column, showing which logical CPUs are siblings on the same physical core — useful for CPU affinity decisions like avoiding pinning two unrelated latency-sensitive threads onto sibling logical CPUs of the same core.

You might also need