Skip to content

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

Notifications You must be signed in to change notification settings

sudarsunkannan/Thermalthrottling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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

Usage
=====

$ sudo ./throttle.sh socket_num throttle_level

$ sudo ./throttle.sh 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...

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

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

Registers
==========
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.

Values
====== 
$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 :) 

@inproceedings{Kannan:2016:PPV:2901318.2901325,
 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},
 } 

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published