61 lines
2.1 KiB
Lua
61 lines
2.1 KiB
Lua
local fs = require "nixio.fs"
|
|
|
|
cpu_freqs = fs.readfile("/sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies") or "100000"
|
|
cpu_freqs = string.sub(cpu_freqs, 1, -3)
|
|
|
|
cpu_governors = fs.readfile("/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors") or "performance"
|
|
cpu_governors = string.sub(cpu_governors, 1, -3)
|
|
|
|
function string.split(input, delimiter)
|
|
input = tostring(input)
|
|
delimiter = tostring(delimiter)
|
|
if (delimiter=='') then return false end
|
|
local pos,arr = 0, {}
|
|
for st,sp in function() return string.find(input, delimiter, pos, true) end do
|
|
table.insert(arr, string.sub(input, pos, st - 1))
|
|
pos = sp + 1
|
|
end
|
|
table.insert(arr, string.sub(input, pos))
|
|
return arr
|
|
end
|
|
|
|
freq_array = string.split(cpu_freqs, " ")
|
|
governor_array = string.split(cpu_governors, " ")
|
|
|
|
mp = Map("cpufreq", translate("CPU Freq Settings"))
|
|
mp.description = translate("Set CPU Scaling Governor to Max Performance or Balance Mode")
|
|
|
|
s = mp:section(NamedSection, "cpufreq", "settings")
|
|
s.anonymouse = true
|
|
|
|
governor = s:option(ListValue, "governor", translate("CPU Scaling Governor"))
|
|
for _, e in ipairs(governor_array) do
|
|
if e ~= "" then governor:value(translate(e,string.upper(e))) end
|
|
end
|
|
|
|
minfreq = s:option(ListValue, "minifreq", translate("Min Idle CPU Freq"))
|
|
for _, e in ipairs(freq_array) do
|
|
if e ~= "" then minfreq:value(e) end
|
|
end
|
|
|
|
maxfreq = s:option(ListValue, "maxfreq", translate("Max Turbo Boost CPU Freq"))
|
|
for _, e in ipairs(freq_array) do
|
|
if e ~= "" then maxfreq:value(e) end
|
|
end
|
|
|
|
upthreshold = s:option(Value, "upthreshold", translate("CPU Switching Threshold"))
|
|
upthreshold.datatype="range(1,99)"
|
|
upthreshold.rmempty = false
|
|
upthreshold.description = translate("Kernel make a decision on whether it should increase the frequency (%)")
|
|
upthreshold.placeholder = 50
|
|
upthreshold.default = 50
|
|
|
|
factor = s:option(Value, "factor", translate("CPU Switching Sampling rate"))
|
|
factor.datatype="range(1,100000)"
|
|
factor.rmempty = false
|
|
factor.description = translate("The sampling rate determines how frequently the governor checks to tune the CPU (ms)")
|
|
factor.placeholder = 10
|
|
factor.default = 10
|
|
|
|
return mp
|