I am using AMD's EPYC 7713 CPU. According to the specification, its maximum frequency is 3.675GHz. But when I run stress-ng (only running single threaded cpu loads), its frequency does not exceed 3.1GHz.
Performance counter stats for 'stress-ng --cpu 1':
9537.779297 task-clock (msec) # 1.000 CPUs utilized
11 context-switches # 0.001 K/sec
0 cpu-migrations # 0.000 K/sec
6,913 page-faults # 0.725 K/sec
29,506,467,746 cycles # 3.094 GHz <= lower than 3.675GHz
79,241,572 stalled-cycles-frontend # 0.27% frontend cycles idle
526,975,722 stalled-cycles-backend # 1.79% backend cycles idle
68,149,536,059 instructions # 2.31 insn per cycle
# 0.01 stalled cycles per insn
13,321,466,371 branches # 1396.705 M/sec
71,660,522 branch-misses # 0.54% of all branches
9.538411830 seconds time elapsed
Why its frequency lower than expected?
Processors do not run at their maximum frequency all the time. The processor automatically selects the best frequency depending on the workload demand. If workload demand is high and there are no physical constraints, then the processor may operate at or close to the turbo frequency.