-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
67 lines (53 loc) · 1.67 KB
/
main.py
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
58
59
60
61
62
63
64
65
66
67
import os
import requests
import time
import subprocess
from tebalodev import utils
max_load = utils.max_load()
min_load = utils.min_load()
avail_freqs = utils.get_core_freqeuncies()
avail_freqs.pop()
core_count = utils.get_core_count()
def expected_set_frequencies():
no_of_avail_freqs = len(avail_freqs)
block_size = (max_load - min_load)/float(no_of_avail_freqs)
set_freq = []
current_loads = utils.get_current_loads()
for load in current_loads:
temp = min_load
for freq in reversed(avail_freqs):
if(temp <= load <= (temp + block_size)) :
set_freq.append(freq)
break
temp += block_size
return set_freq
def current_temperature(core):
return utils.get_core_temparature()[core]
def reduce_level(freq):
no_of_avail_freqs = len(avail_freqs)
if freq == avail_freqs[no_of_avail_freqs-1]:
return freq
for i in range(0,no_of_avail_freqs) :
if freq == avail_freqs[i] :
return avail_freqs[i+1]
return avail_freqs[no_of_avail_freqs/2]
def set_frequencies():
safe_temperature = utils.calculate_safe_temperature()
while True:
freqs = expected_set_frequencies()
print freqs
for i in range(0,core_count) :
freq = freqs[i]
print current_temperature(i) + " : temps : " + str(safe_temperature)
if utils.get_current_battery() < 10 :
min_freq = avail_freqs[-1]
utils.set_core_frequency(i,min_freq)
elif int(current_temperature(i)) <= safe_temperature:
utils.set_core_frequency(i,freq)
else :
curr_freq = utils.get_current_frequency(i)
previous_level_freq = reduce_level(curr_freq)
utils.set_core_frequency(i,previous_level_freq)
time.sleep(1)
if __name__ == "__main__":
set_frequencies()