-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME
58 lines (44 loc) · 2.13 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#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},
}