add freq to Processor
This commit is contained in:
parent
09dbbeea85
commit
4d0874c825
|
@ -63,24 +63,7 @@ local internal_temp = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local _PCI_UTIL_Y_ = _INTERNAL_TEMP_Y_ + _TEXT_SPACING_
|
local _SEP_Y_2_ = _INTERNAL_TEMP_Y_ + _SEPARATOR_SPACING_
|
||||||
|
|
||||||
local pci_util = {
|
|
||||||
label = _G_Widget_.Text{
|
|
||||||
x = _G_INIT_DATA_.LEFT_X,
|
|
||||||
y = _PCI_UTIL_Y_,
|
|
||||||
text = 'PCI Utilization'
|
|
||||||
},
|
|
||||||
value = _G_Widget_.Text{
|
|
||||||
x = _RIGHT_X_,
|
|
||||||
y = _PCI_UTIL_Y_,
|
|
||||||
x_align = 'right',
|
|
||||||
text_color = _G_Patterns_.BLUE,
|
|
||||||
text = '<pci_util>'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
local _SEP_Y_2_ = _PCI_UTIL_Y_ + _SEPARATOR_SPACING_
|
|
||||||
|
|
||||||
local separator2 = _G_Widget_.Line{
|
local separator2 = _G_Widget_.Line{
|
||||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_2_},
|
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_2_},
|
||||||
|
@ -204,13 +187,12 @@ local NV_REGEX = '(%d+)\n'..
|
||||||
'(%d+)\n'..
|
'(%d+)\n'..
|
||||||
'(%d+)\n'..
|
'(%d+)\n'..
|
||||||
'(%d+),(%d+)\n'..
|
'(%d+),(%d+)\n'..
|
||||||
'graphics=(%d+), memory=%d+, video=(%d+), PCIe=(%d+)\n'
|
'graphics=(%d+), memory=%d+, video=(%d+), PCIe=%d+\n'
|
||||||
|
|
||||||
local NA = 'N/A'
|
local NA = 'N/A'
|
||||||
|
|
||||||
local nvidia_off = function(cr)
|
local nvidia_off = function(cr)
|
||||||
CriticalText.set(internal_temp.value, cr, NA, false)
|
CriticalText.set(internal_temp.value, cr, NA, false)
|
||||||
Text.set(pci_util.value, cr, NA)
|
|
||||||
|
|
||||||
TextColumn.set(clock_speed.values, cr, 1, NA)
|
TextColumn.set(clock_speed.values, cr, 1, NA)
|
||||||
TextColumn.set(clock_speed.values, cr, 2, NA)
|
TextColumn.set(clock_speed.values, cr, 2, NA)
|
||||||
|
@ -242,14 +224,13 @@ local update = function(cr)
|
||||||
local nvidia_settings_glob = Util.execute_cmd(NV_QUERY)
|
local nvidia_settings_glob = Util.execute_cmd(NV_QUERY)
|
||||||
|
|
||||||
local used_memory, total_memory, temp_reading, gpu_frequency,
|
local used_memory, total_memory, temp_reading, gpu_frequency,
|
||||||
memory_frequency, gpu_utilization, vid_utilization,
|
memory_frequency, gpu_utilization, vid_utilization
|
||||||
pci_utilization = __string_match(nvidia_settings_glob, NV_REGEX)
|
= __string_match(nvidia_settings_glob, NV_REGEX)
|
||||||
|
|
||||||
local is_critical = false
|
local is_critical = false
|
||||||
if __tonumber(temp_reading) > 80 then is_critical = true end
|
if __tonumber(temp_reading) > 80 then is_critical = true end
|
||||||
|
|
||||||
CriticalText.set(internal_temp.value, cr, temp_reading..'°C', is_critical)
|
CriticalText.set(internal_temp.value, cr, temp_reading..'°C', is_critical)
|
||||||
Text.set(pci_util.value, cr, pci_utilization..'%')
|
|
||||||
|
|
||||||
TextColumn.set(clock_speed.values, cr, 1, gpu_frequency..' Mhz')
|
TextColumn.set(clock_speed.values, cr, 1, gpu_frequency..' Mhz')
|
||||||
TextColumn.set(clock_speed.values, cr, 2, memory_frequency..' Mhz')
|
TextColumn.set(clock_speed.values, cr, 2, memory_frequency..' Mhz')
|
||||||
|
@ -280,7 +261,6 @@ _SEP_Y_1_ = nil
|
||||||
_SEP_Y_2_ = nil
|
_SEP_Y_2_ = nil
|
||||||
_SEP_Y_3_ = nil
|
_SEP_Y_3_ = nil
|
||||||
_INTERNAL_TEMP_Y_ = nil
|
_INTERNAL_TEMP_Y_ = nil
|
||||||
_PCI_UTIL_Y_ = nil
|
|
||||||
_CLOCK_SPEED_Y_ = nil
|
_CLOCK_SPEED_Y_ = nil
|
||||||
_GPU_UTIL_Y_ = nil
|
_GPU_UTIL_Y_ = nil
|
||||||
_MEM_UTIL_Y_ = nil
|
_MEM_UTIL_Y_ = nil
|
||||||
|
@ -301,9 +281,6 @@ local draw = function(cr, current_interface)
|
||||||
Text.draw(internal_temp.label, cr)
|
Text.draw(internal_temp.label, cr)
|
||||||
Text.draw(internal_temp.value, cr)
|
Text.draw(internal_temp.value, cr)
|
||||||
|
|
||||||
Text.draw(pci_util.label, cr)
|
|
||||||
Text.draw(pci_util.value, cr)
|
|
||||||
|
|
||||||
Line.draw(separator2, cr)
|
Line.draw(separator2, cr)
|
||||||
|
|
||||||
TextColumn.draw(clock_speed.labels, cr)
|
TextColumn.draw(clock_speed.labels, cr)
|
||||||
|
|
|
@ -21,23 +21,26 @@ for r = 1, NUM_ROWS do
|
||||||
TABLE_CONKY[3][r] = '${top cpu '..r..'}'
|
TABLE_CONKY[3][r] = '${top cpu '..r..'}'
|
||||||
end
|
end
|
||||||
|
|
||||||
local _MODULE_Y_ = 636
|
local _MODULE_Y_ = 614
|
||||||
local _DIAL_INNER_RADIUS_ = 30
|
local _DIAL_INNER_RADIUS_ = 30
|
||||||
local _DIAL_OUTER_RADIUS_ = 42
|
local _DIAL_OUTER_RADIUS_ = 42
|
||||||
local _DIAL_SPACING_ = 1
|
local _DIAL_SPACING_ = 1
|
||||||
local _TEXT_Y_OFFSET_ = 15
|
local _TEXT_Y_OFFSET_ = 15
|
||||||
local _SEPARATOR_SPACING_ = 20
|
local _SEPARATOR_SPACING_ = 20
|
||||||
|
local _TEXT_SPACING_ = 22
|
||||||
local _PLOT_SECTION_BREAK_ = 23
|
local _PLOT_SECTION_BREAK_ = 23
|
||||||
local _PLOT_HEIGHT_ = 56
|
local _PLOT_HEIGHT_ = 56
|
||||||
local _TABLE_SECTION_BREAK_ = 20
|
local _TABLE_SECTION_BREAK_ = 20
|
||||||
local _TABLE_HEIGHT_ = 114
|
local _TABLE_HEIGHT_ = 114
|
||||||
|
|
||||||
local _create_core_ = function(cores, id, x, y)
|
local _create_core_ = function(cores, id, x, y)
|
||||||
local conky_threads = {}
|
local conky_loads = {}
|
||||||
|
local conky_freqs = {}
|
||||||
|
|
||||||
for c = 0, NUM_PHYSICAL_CORES * NUM_THREADS_PER_CORE - 1 do
|
for c = 0, NUM_PHYSICAL_CORES * NUM_THREADS_PER_CORE - 1 do
|
||||||
if Util.read_file('/sys/devices/system/cpu/cpu'..c..'/topology/core_id', nil, '*n') == id then
|
if Util.read_file('/sys/devices/system/cpu/cpu'..c..'/topology/core_id', nil, '*n') == id then
|
||||||
table.insert(conky_threads, '${cpu cpu'..c..'}')
|
table.insert(conky_loads, '${cpu cpu'..c..'}')
|
||||||
|
table.insert(conky_freqs, '${freq '..c..'}')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -72,7 +75,8 @@ local _create_core_ = function(cores, id, x, y)
|
||||||
critical_limit = '>90'
|
critical_limit = '>90'
|
||||||
},
|
},
|
||||||
coretemp_path = string.format(CORETEMP_PATH, hwmon_index, 'temp'..(id + 2)..'_input'),
|
coretemp_path = string.format(CORETEMP_PATH, hwmon_index, 'temp'..(id + 2)..'_input'),
|
||||||
conky_threads = conky_threads
|
conky_loads = conky_loads,
|
||||||
|
conky_freqs = conky_freqs
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -80,7 +84,7 @@ local header = _G_Widget_.Header{
|
||||||
x = _G_INIT_DATA_.LEFT_X,
|
x = _G_INIT_DATA_.LEFT_X,
|
||||||
y = _MODULE_Y_,
|
y = _MODULE_Y_,
|
||||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||||
header = "PROCESSOR"
|
header = 'PROCESSOR'
|
||||||
}
|
}
|
||||||
|
|
||||||
--we assume that this cpu has 4 physical cores with 2 logical each
|
--we assume that this cpu has 4 physical cores with 2 logical each
|
||||||
|
@ -98,21 +102,38 @@ local _RIGHT_X_ = _G_INIT_DATA_.LEFT_X + _G_INIT_DATA_.SECTION_WIDTH
|
||||||
local _PROCESS_Y_ = header.bottom_y + _DIAL_OUTER_RADIUS_ * 2 + _PLOT_SECTION_BREAK_
|
local _PROCESS_Y_ = header.bottom_y + _DIAL_OUTER_RADIUS_ * 2 + _PLOT_SECTION_BREAK_
|
||||||
|
|
||||||
local process = {
|
local process = {
|
||||||
labels = _G_Widget_.Text{
|
label = _G_Widget_.Text{
|
||||||
x = _G_INIT_DATA_.LEFT_X,
|
x = _G_INIT_DATA_.LEFT_X,
|
||||||
y = _PROCESS_Y_,
|
y = _PROCESS_Y_,
|
||||||
text = 'R | S | D | T | Z'
|
text = 'R | S | D | T | Z'
|
||||||
},
|
},
|
||||||
values = _G_Widget_.Text{
|
value = _G_Widget_.Text{
|
||||||
x = _RIGHT_X_,
|
x = _RIGHT_X_,
|
||||||
y = _PROCESS_Y_,
|
y = _PROCESS_Y_,
|
||||||
x_align = 'right',
|
x_align = 'right',
|
||||||
text_color = _G_Patterns_.BLUE,
|
text_color = _G_Patterns_.BLUE,
|
||||||
text = '<R.S.D.T.Z>'
|
text = '<R> | <S> | <D> | <T> | <Z>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local _SEP_Y_ = _PROCESS_Y_ + _SEPARATOR_SPACING_
|
local _FREQ_Y_ = _PROCESS_Y_ + _TEXT_SPACING_
|
||||||
|
|
||||||
|
local ave_freq = {
|
||||||
|
label = _G_Widget_.Text{
|
||||||
|
x = _G_INIT_DATA_.LEFT_X,
|
||||||
|
y = _FREQ_Y_,
|
||||||
|
text = 'Ave Freq'
|
||||||
|
},
|
||||||
|
value = _G_Widget_.Text{
|
||||||
|
x = _RIGHT_X_,
|
||||||
|
y = _FREQ_Y_,
|
||||||
|
x_align = 'right',
|
||||||
|
text_color = _G_Patterns_.BLUE,
|
||||||
|
text = '<freq>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local _SEP_Y_ = _FREQ_Y_ + _SEPARATOR_SPACING_
|
||||||
|
|
||||||
local separator = _G_Widget_.Line{
|
local separator = _G_Widget_.Line{
|
||||||
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_},
|
p1 = {x = _G_INIT_DATA_.LEFT_X, y = _SEP_Y_},
|
||||||
|
@ -160,30 +181,39 @@ local update = function(cr)
|
||||||
local conky = Util.conky
|
local conky = Util.conky
|
||||||
local char_count = Util.char_count
|
local char_count = Util.char_count
|
||||||
|
|
||||||
local sum = 0
|
local load_sum = 0
|
||||||
|
local freq_sum = 0
|
||||||
|
|
||||||
for c = 1, NUM_PHYSICAL_CORES do
|
for c = 1, NUM_PHYSICAL_CORES do
|
||||||
local core = cores[c]
|
local core = cores[c]
|
||||||
|
|
||||||
local conky_threads = core.conky_threads
|
|
||||||
|
local conky_loads = core.conky_loads
|
||||||
|
local conky_freqs = core.conky_freqs
|
||||||
|
|
||||||
for t = 1, NUM_THREADS_PER_CORE do
|
for t = 1, NUM_THREADS_PER_CORE do
|
||||||
local percent = Util.conky_numeric(conky_threads[t]) * 0.01
|
local percent = Util.conky_numeric(conky_loads[t]) * 0.01
|
||||||
CompoundDial.set(core.dials, t, percent)
|
CompoundDial.set(core.dials, t, percent)
|
||||||
sum = sum + percent
|
load_sum = load_sum + percent
|
||||||
|
|
||||||
|
freq_sum = freq_sum + Util.conky_numeric(conky_freqs[t])
|
||||||
end
|
end
|
||||||
|
|
||||||
CriticalText.set(core.coretemp_text, cr, Util.round(0.001 * Util.read_file(core.coretemp_path, nil, '*n')))
|
CriticalText.set(core.coretemp_text, cr, Util.round(0.001 * Util.read_file(core.coretemp_path, nil, '*n')))
|
||||||
end
|
end
|
||||||
|
|
||||||
local process_glob = Util.execute_cmd('ps -A -o s')
|
local process_glob = Util.execute_cmd('ps -A -o s')
|
||||||
|
|
||||||
--subtract one from running b/c ps will always be "running"
|
--subtract one from running b/c ps will always be "running"
|
||||||
Text.set(process.values, cr, (char_count(process_glob, 'R') - 1)..' | '..
|
Text.set(process.value, cr, (char_count(process_glob, 'R') - 1)..' | '..
|
||||||
char_count(process_glob, 'S')..' | '..
|
char_count(process_glob, 'S')..' | '..
|
||||||
char_count(process_glob, 'D')..' | '..
|
char_count(process_glob, 'D')..' | '..
|
||||||
char_count(process_glob, 'T')..' | '..
|
char_count(process_glob, 'T')..' | '..
|
||||||
char_count(process_glob, 'Z'))
|
char_count(process_glob, 'Z'))
|
||||||
|
|
||||||
local load_percent = Util.round(sum / NUM_PHYSICAL_CORES / NUM_THREADS_PER_CORE, 2)
|
Text.set(ave_freq.value, cr, Util.round(freq_sum / NUM_PHYSICAL_CORES / NUM_THREADS_PER_CORE) .. ' MHz')
|
||||||
|
|
||||||
|
local load_percent = Util.round(load_sum / NUM_PHYSICAL_CORES / NUM_THREADS_PER_CORE, 2)
|
||||||
CriticalText.set(total_load.value, cr, load_percent * 100)
|
CriticalText.set(total_load.value, cr, load_percent * 100)
|
||||||
|
|
||||||
LabelPlot.update(plot, load_percent)
|
LabelPlot.update(plot, load_percent)
|
||||||
|
@ -202,11 +232,13 @@ _DIAL_OUTER_RADIUS_ = nil
|
||||||
_DIAL_SPACING_ = nil
|
_DIAL_SPACING_ = nil
|
||||||
_TEXT_Y_OFFSET_ = nil
|
_TEXT_Y_OFFSET_ = nil
|
||||||
_SEPARATOR_SPACING_ = nil
|
_SEPARATOR_SPACING_ = nil
|
||||||
|
_TEXT_SPACING_ = nil
|
||||||
_PLOT_SECTION_BREAK_ = nil
|
_PLOT_SECTION_BREAK_ = nil
|
||||||
_PLOT_HEIGHT_ = nil
|
_PLOT_HEIGHT_ = nil
|
||||||
_TABLE_SECTION_BREAK_ = nil
|
_TABLE_SECTION_BREAK_ = nil
|
||||||
_TABLE_HEIGHT_ = nil
|
_TABLE_HEIGHT_ = nil
|
||||||
_create_core_ = nil
|
_create_core_ = nil
|
||||||
|
_FREQ_Y_ = nil
|
||||||
_LOAD_Y_ = nil
|
_LOAD_Y_ = nil
|
||||||
_RIGHT_X_ = nil
|
_RIGHT_X_ = nil
|
||||||
_SEP_Y_ = nil
|
_SEP_Y_ = nil
|
||||||
|
@ -227,8 +259,11 @@ local draw = function(cr, current_interface)
|
||||||
CriticalText.draw(core.coretemp_text, cr)
|
CriticalText.draw(core.coretemp_text, cr)
|
||||||
end
|
end
|
||||||
|
|
||||||
Text.draw(process.labels, cr)
|
Text.draw(process.label, cr)
|
||||||
Text.draw(process.values, cr)
|
Text.draw(process.value, cr)
|
||||||
|
|
||||||
|
Text.draw(ave_freq.label, cr)
|
||||||
|
Text.draw(ave_freq.value, cr)
|
||||||
|
|
||||||
Line.draw(separator, cr)
|
Line.draw(separator, cr)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue