Skip to content

Tool/script to thermal throttle DRAM bandwidth for Intel CPUs.

Notifications You must be signed in to change notification settings


Folders and files

Last commit message
Last commit date

Latest commit



12 Commits

Repository files navigation

#Thermal throttling for memory bandwidth reduction
# For the exact registers for your platform, please see, Intel software development manual
# and search for Thermal register values.
# TODO: More generic script for multiple sockets and configurations
# The script uses the stream benchmark for measuring the memory bandwidth


$ sudo ./ socket_num throttle_level

$ sudo ./ 0 2

throttle_level values => 0, 1, 2
In our platform, throttle_level=0 disables throttling, throttle_level=1 reduces bandwidth 
by ~2x-4x, and throttle_level=2 reduces bandwidth by ~8x-10x

socket_num => 0, 1, 2
socket_num = 1 (first socket), socket_num = 0 (second socket), socket_num = 2 ( both sockets)
Currently, this script supports throttling for only two nodes. Will be extended soon...

For thermal throttling, you should use the PCI registers using setpci command.
The basic commands go like 

  for i in {4..6}
    setpci -s ff:0$i.3 0x84.L=$throttle
    setpci -s ff:0$i.3 0x48.L=$apply

Next, for your specific CPU architecture, see the Intel software development manual for thermal control registers. They are generally 3 register for each memorysocket. In our machine, the thermal registers are ff:04.3, ff:05.3, ff:06.3.

$apply - enables or disables the thermal throttling. For enabling, you can use hex 2.
apply='0x2' and for disabling throttling apply='0x0'

$throttle - You can throttle speeds using different values. In our Intel Xeon platform
throttle='0x1f0f' reduces bandwidth by 2x. throttle='0x0f0f' reduces by 8x. You can try difference hex values by modifying the values.

Stream benchmark
The script uses stream benchmark for measuring the memory bandwidth.

More details are available in our paper :) 

 author = {Kannan, Sudarsun and Gavrilovska, Ada and Schwan, Karsten},
 title = {pVM: Persistent Virtual Memory for Efficient Capacity Scaling and Object Storage},
 booktitle = {Proceedings of the Eleventh European Conference on Computer Systems},
 series = {EuroSys '16},
 doi = {10.1145/2901318.2901325},


Tool/script to thermal throttle DRAM bandwidth for Intel CPUs.






No releases published