rearrange power monitor with mulitplot
This commit is contained in:
parent
72e6e9b367
commit
23cd57d1aa
2
core
2
core
|
@ -1 +1 @@
|
||||||
Subproject commit 5fd6e1b11239b1d24b6c1a18cbfb6c7f876acc96
|
Subproject commit 36cc286cb33dff4a649bee9d8b2620f6033fd14a
|
|
@ -1,10 +1,12 @@
|
||||||
|
local Patterns = require 'Patterns'
|
||||||
local Text = require 'Text'
|
local Text = require 'Text'
|
||||||
|
local TextColumn = require 'TextColumn'
|
||||||
local Line = require 'Line'
|
local Line = require 'Line'
|
||||||
local ScalePlot = require 'ScalePlot'
|
local ScalePlot = require 'ScalePlot'
|
||||||
local Util = require 'Util'
|
local Util = require 'Util'
|
||||||
|
|
||||||
local _MODULE_Y_ = 348
|
local _MODULE_Y_ = 348
|
||||||
local _SEPARATOR_SPACING_ = 20
|
-- local _SEPARATOR_SPACING_ = 20
|
||||||
local _TEXT_SPACING_ = 20
|
local _TEXT_SPACING_ = 20
|
||||||
local _PLOT_SEC_BREAK_ = 20
|
local _PLOT_SEC_BREAK_ = 20
|
||||||
local _PLOT_HEIGHT_ = 56
|
local _PLOT_HEIGHT_ = 56
|
||||||
|
@ -28,57 +30,79 @@ local header = _G_Widget_.Header{
|
||||||
|
|
||||||
local _RIGHT_X_ = _G_INIT_DATA_.RIGHT_X + _G_INIT_DATA_.SECTION_WIDTH
|
local _RIGHT_X_ = _G_INIT_DATA_.RIGHT_X + _G_INIT_DATA_.SECTION_WIDTH
|
||||||
|
|
||||||
local dram_igpu = {
|
-- local dram_igpu = {
|
||||||
label = _G_Widget_.Text{
|
-- label = _G_Widget_.Text{
|
||||||
x = _G_INIT_DATA_.RIGHT_X,
|
-- x = _G_INIT_DATA_.RIGHT_X,
|
||||||
y = header.bottom_y,
|
-- y = header.bottom_y,
|
||||||
text = 'DRAM | iGPU'
|
-- text = 'DRAM | iGPU'
|
||||||
},
|
-- },
|
||||||
value = _G_Widget_.Text{
|
-- value = _G_Widget_.Text{
|
||||||
x = _RIGHT_X_,
|
-- x = _RIGHT_X_,
|
||||||
y = header.bottom_y,
|
-- y = header.bottom_y,
|
||||||
x_align = 'right',
|
-- x_align = 'right',
|
||||||
text_color = _G_Patterns_.BLUE,
|
-- text_color = _G_Patterns_.BLUE,
|
||||||
append_end = ' W',
|
-- append_end = ' W',
|
||||||
text = '<dram_igpu>'
|
-- text = '<dram_igpu>'
|
||||||
}
|
-- }
|
||||||
}
|
-- }
|
||||||
|
|
||||||
local _SEP_Y_ = header.bottom_y + _SEPARATOR_SPACING_
|
-- local _SEP_Y_ = header.bottom_y + _SEPARATOR_SPACING_
|
||||||
|
|
||||||
local separator = _G_Widget_.Line{
|
-- local separator = _G_Widget_.Line{
|
||||||
p1 = {x = _G_INIT_DATA_.RIGHT_X, y = _SEP_Y_},
|
-- p1 = {x = _G_INIT_DATA_.RIGHT_X, y = _SEP_Y_},
|
||||||
p2 = {x = _RIGHT_X_, y = _SEP_Y_}
|
-- p2 = {x = _RIGHT_X_, y = _SEP_Y_}
|
||||||
}
|
-- }
|
||||||
|
|
||||||
local _PKG0_Y_ = _SEP_Y_ + _SEPARATOR_SPACING_
|
-- local _PKG0_Y_ = _SEP_Y_ + _SEPARATOR_SPACING_
|
||||||
|
|
||||||
local pkg0 = {
|
local pkg0 = {
|
||||||
label = _G_Widget_.Text{
|
labels = _G_Widget_.TextColumn{
|
||||||
x = _G_INIT_DATA_.RIGHT_X,
|
x = _G_INIT_DATA_.RIGHT_X,
|
||||||
y = _PKG0_Y_,
|
y = header.bottom_y,
|
||||||
text = 'PKG 0'
|
'Cores',
|
||||||
|
'LLC+MC',
|
||||||
|
'iGPU'
|
||||||
},
|
},
|
||||||
value = _G_Widget_.Text{
|
core_value = _G_Widget_.Text{
|
||||||
x = _RIGHT_X_,
|
x = _RIGHT_X_,
|
||||||
y = _PKG0_Y_,
|
y = header.bottom_y,
|
||||||
x_align = 'right',
|
x_align = 'right',
|
||||||
text_color = _G_Patterns_.BLUE,
|
text_color = Patterns.BLUE,
|
||||||
text = '<pkg0>',
|
text = '<core>',
|
||||||
|
append_end = ' W',
|
||||||
|
},
|
||||||
|
llcmc_value = _G_Widget_.Text{
|
||||||
|
x = _RIGHT_X_,
|
||||||
|
y = header.bottom_y + _TEXT_SPACING_,
|
||||||
|
x_align = 'right',
|
||||||
|
text_color = _G_Patterns_.PURPLE,
|
||||||
|
text = '<llcmc>',
|
||||||
append_end = ' W'
|
append_end = ' W'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
igpu_value = _G_Widget_.Text{
|
||||||
|
x = _RIGHT_X_,
|
||||||
|
y = header.bottom_y + _TEXT_SPACING_ * 2,
|
||||||
|
x_align = 'right',
|
||||||
|
text_color = Patterns.YELLOW,
|
||||||
|
text = '<igpu>',
|
||||||
|
append_end = ' W',
|
||||||
|
},
|
||||||
plot = _G_Widget_.ScalePlot{
|
plot = _G_Widget_.ScalePlot{
|
||||||
x = _G_INIT_DATA_.RIGHT_X,
|
x = _G_INIT_DATA_.RIGHT_X,
|
||||||
y = _PKG0_Y_ + _PLOT_SEC_BREAK_,
|
y = header.bottom_y + _TEXT_SPACING_ * 2 + _PLOT_SEC_BREAK_,
|
||||||
width = _G_INIT_DATA_.SECTION_WIDTH,
|
width = _G_INIT_DATA_.SECTION_WIDTH,
|
||||||
height = _PLOT_HEIGHT_,
|
height = _PLOT_HEIGHT_,
|
||||||
y_label_func = power_label_function,
|
y_label_func = power_label_function,
|
||||||
|
{Patterns.PLOT_LINE_YELLOW, Patterns.PLOT_FILL_YELLOW},
|
||||||
|
{Patterns.PLOT_LINE_PURPLE, Patterns.PLOT_FILL_PURPLE},
|
||||||
|
{Patterns.PLOT_LINE_BLUE, Patterns.PLOT_FILL_BLUE}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local _CORE_Y_ = _PKG0_Y_ + _PLOT_SEC_BREAK_ * 2 + _PLOT_HEIGHT_
|
local _CORE_Y_ = header.bottom_y + _TEXT_SPACING_ * 2 + _PLOT_SEC_BREAK_ * 2 + _PLOT_HEIGHT_
|
||||||
|
|
||||||
local pp01 = {
|
local dram = {
|
||||||
label = _G_Widget_.Text{
|
label = _G_Widget_.Text{
|
||||||
x = _G_INIT_DATA_.RIGHT_X,
|
x = _G_INIT_DATA_.RIGHT_X,
|
||||||
y = _CORE_Y_,
|
y = _CORE_Y_,
|
||||||
|
@ -140,21 +164,20 @@ local update = function(cr, update_frequency, is_using_ac)
|
||||||
local igpu_uj_cnt = Util.read_file(IGPU_PATH, nil, '*n')
|
local igpu_uj_cnt = Util.read_file(IGPU_PATH, nil, '*n')
|
||||||
local dram_uj_cnt = Util.read_file(DRAM_PATH, nil, '*n')
|
local dram_uj_cnt = Util.read_file(DRAM_PATH, nil, '*n')
|
||||||
|
|
||||||
Text.set(dram_igpu.value, cr,
|
|
||||||
Util.precision_round_to_string(
|
|
||||||
calculate_power(cr, prev_dram_uj_cnt, dram_uj_cnt, update_frequency), 3)
|
|
||||||
..' | '..
|
|
||||||
Util.precision_round_to_string(
|
|
||||||
calculate_power(cr, prev_igpu_uj_cnt, igpu_uj_cnt, update_frequency), 3))
|
|
||||||
|
|
||||||
local pkg0_power = calculate_power(cr, prev_pkg0_uj_cnt, pkg0_uj_cnt, update_frequency)
|
local pkg0_power = calculate_power(cr, prev_pkg0_uj_cnt, pkg0_uj_cnt, update_frequency)
|
||||||
local core_power = calculate_power(cr, prev_core_uj_cnt, core_uj_cnt, update_frequency)
|
local core_power = calculate_power(cr, prev_core_uj_cnt, core_uj_cnt, update_frequency)
|
||||||
|
local igpu_power = calculate_power(cr, prev_igpu_uj_cnt, igpu_uj_cnt, update_frequency)
|
||||||
|
|
||||||
Text.set(pkg0.value, cr, Util.precision_round_to_string(pkg0_power, 3))
|
Text.set(pkg0.core_value, cr, Util.precision_round_to_string(core_power, 3))
|
||||||
ScalePlot.update(pkg0.plot, cr, pkg0_power)
|
Text.set(pkg0.igpu_value, cr, Util.precision_round_to_string(igpu_power, 3))
|
||||||
|
Text.set(pkg0.llcmc_value, cr, Util.precision_round_to_string(pkg0_power - core_power - igpu_power, 3))
|
||||||
|
|
||||||
Text.set(pp01.value, cr, Util.precision_round_to_string(core_power, 3))
|
ScalePlot.update(pkg0.plot, cr, igpu_power, pkg0_power - core_power, pkg0_power)
|
||||||
ScalePlot.update(pp01.plot, cr, core_power)
|
|
||||||
|
local dram_power = calculate_power(cr, prev_dram_uj_cnt, dram_uj_cnt, update_frequency)
|
||||||
|
|
||||||
|
Text.set(dram.value, cr, Util.precision_round_to_string(dram_power, 3))
|
||||||
|
ScalePlot.update(dram.plot, cr, dram_power)
|
||||||
|
|
||||||
prev_pkg0_uj_cnt = pkg0_uj_cnt
|
prev_pkg0_uj_cnt = pkg0_uj_cnt
|
||||||
prev_core_uj_cnt = core_uj_cnt
|
prev_core_uj_cnt = core_uj_cnt
|
||||||
|
@ -174,14 +197,15 @@ local update = function(cr, update_frequency, is_using_ac)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Patterns = nil
|
||||||
_MODULE_Y_ = nil
|
_MODULE_Y_ = nil
|
||||||
_SEPARATOR_SPACING_ = nil
|
-- _SEPARATOR_SPACING_ = nil
|
||||||
_TEXT_SPACING_ = nil
|
_TEXT_SPACING_ = nil
|
||||||
_PLOT_SEC_BREAK_ = nil
|
_PLOT_SEC_BREAK_ = nil
|
||||||
_PLOT_HEIGHT_ = nil
|
_PLOT_HEIGHT_ = nil
|
||||||
_RIGHT_X_ = nil
|
_RIGHT_X_ = nil
|
||||||
_SEP_Y_ = nil
|
-- _SEP_Y_ = nil
|
||||||
_PKG0_Y_ = nil
|
-- _PKG0_Y_ = nil
|
||||||
_CORE_Y_ = nil
|
_CORE_Y_ = nil
|
||||||
_BATTERY_DRAW_Y_ = nil
|
_BATTERY_DRAW_Y_ = nil
|
||||||
|
|
||||||
|
@ -192,18 +216,15 @@ local draw = function(cr, current_interface, update_frequency, is_using_ac)
|
||||||
Text.draw(header.text, cr)
|
Text.draw(header.text, cr)
|
||||||
Line.draw(header.underline, cr)
|
Line.draw(header.underline, cr)
|
||||||
|
|
||||||
Text.draw(dram_igpu.label, cr)
|
TextColumn.draw(pkg0.labels, cr)
|
||||||
Text.draw(dram_igpu.value, cr)
|
Text.draw(pkg0.llcmc_value, cr)
|
||||||
|
Text.draw(pkg0.core_value, cr)
|
||||||
Line.draw(separator, cr)
|
Text.draw(pkg0.igpu_value, cr)
|
||||||
|
|
||||||
Text.draw(pkg0.label, cr)
|
|
||||||
Text.draw(pkg0.value, cr)
|
|
||||||
ScalePlot.draw(pkg0.plot, cr)
|
ScalePlot.draw(pkg0.plot, cr)
|
||||||
|
|
||||||
Text.draw(pp01.label, cr)
|
Text.draw(dram.label, cr)
|
||||||
Text.draw(pp01.value, cr)
|
Text.draw(dram.value, cr)
|
||||||
ScalePlot.draw(pp01.plot, cr)
|
ScalePlot.draw(dram.plot, cr)
|
||||||
|
|
||||||
Text.draw(battery_draw.label, cr)
|
Text.draw(battery_draw.label, cr)
|
||||||
Text.draw(battery_draw.value, cr)
|
Text.draw(battery_draw.value, cr)
|
||||||
|
|
|
@ -3,69 +3,103 @@ local M = {}
|
||||||
local Color = require 'Color'
|
local Color = require 'Color'
|
||||||
local Util = require 'Util'
|
local Util = require 'Util'
|
||||||
|
|
||||||
local WHITE = 0xffffffff
|
-- text colors
|
||||||
|
M.WHITE = Color.init{hex_rgba = 0xffffff}
|
||||||
|
|
||||||
local GREY1 = 0xeeeeeeff
|
M.LIGHT_GREY = Color.init{hex_rgba = 0xeeeeee}
|
||||||
local GREY2 = 0xbfbfbfff
|
M.MID_GREY = Color.init{hex_rgba = 0xd6d6d6}
|
||||||
local GREY3 = 0xd6d6d6ff
|
M.DARK_GREY = Color.init{hex_rgba = 0x888888}
|
||||||
local GREY4 = 0x888888ff
|
|
||||||
local GREY5 = 0x565656ff
|
|
||||||
local GREY6 = 0x2f2f2fb2
|
|
||||||
local BLACK = 0x000000ff
|
|
||||||
|
|
||||||
local BLUE1 = 0x99CEFFff
|
|
||||||
local BLUE2 = 0xBFE1FFff
|
|
||||||
local BLUE3 = 0x316BA6ff
|
|
||||||
|
|
||||||
local RED1 = 0xFF3333ff
|
|
||||||
local RED2 = 0xFF8282ff
|
|
||||||
local RED3 = 0xFFB8B8ff
|
|
||||||
|
|
||||||
local PURPLE1 = 0xeecfffff
|
|
||||||
local PURPLE2 = 0xcb91ffff
|
|
||||||
local PURPLE3 = 0x9523ffff
|
|
||||||
|
|
||||||
M.WHITE = Color.init{hex_rgba = WHITE}
|
|
||||||
|
|
||||||
M.LIGHT_GREY = Color.init{hex_rgba = GREY1}
|
|
||||||
M.MID_GREY = Color.init{hex_rgba = GREY3}
|
|
||||||
M.DARK_GREY = Color.init{hex_rgba = GREY4}
|
|
||||||
|
|
||||||
M.BLUE = Color.init{hex_rgba = BLUE2}
|
|
||||||
M.RED = Color.init{hex_rgba = RED2}
|
|
||||||
M.PURPLE = Color.init{hex_rgba = PURPLE2}
|
|
||||||
|
|
||||||
|
M.BLUE = Color.init{hex_rgba = 0xbfe1ff}
|
||||||
|
M.RED = Color.init{hex_rgba = 0xff8282}
|
||||||
|
M.PURPLE = Color.init{hex_rgba = 0xcb91ff}
|
||||||
|
M.YELLOW = Color.init{hex_rgba = 0xefe7aa
|
||||||
|
}
|
||||||
|
-- arc patterns
|
||||||
|
local GREY2 = 0xbfbfbf
|
||||||
|
local GREY5 = 0x565656
|
||||||
M.GREY_ROUNDED = Color.Gradient{
|
M.GREY_ROUNDED = Color.Gradient{
|
||||||
Color.ColorStop{hex_rgba = GREY5, stop = 0.0},
|
Color.ColorStop{hex_rgba = GREY5, stop = 0.0},
|
||||||
Color.ColorStop{hex_rgba = GREY2, stop = 0.5},
|
Color.ColorStop{hex_rgba = GREY2, stop = 0.5},
|
||||||
Color.ColorStop{hex_rgba = GREY5, stop = 1.0}
|
Color.ColorStop{hex_rgba = GREY5, stop = 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local BLUE1 = 0x99CEFF
|
||||||
|
local BLUE3 = 0x316BA6
|
||||||
M.BLUE_ROUNDED = Color.Gradient{
|
M.BLUE_ROUNDED = Color.Gradient{
|
||||||
Color.ColorStop{hex_rgba = BLUE3, stop = 0.0},
|
Color.ColorStop{hex_rgba = BLUE3, stop = 0.0},
|
||||||
Color.ColorStop{hex_rgba = BLUE1, stop = 0.5},
|
Color.ColorStop{hex_rgba = BLUE1, stop = 0.5},
|
||||||
Color.ColorStop{hex_rgba = BLUE3, stop = 1.0}
|
Color.ColorStop{hex_rgba = BLUE3, stop = 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local RED1 = 0xFF3333
|
||||||
|
local RED3 = 0xFFB8B8
|
||||||
M.RED_ROUNDED = Color.Gradient{
|
M.RED_ROUNDED = Color.Gradient{
|
||||||
Color.ColorStop{hex_rgba = RED1, stop = 0.0},
|
Color.ColorStop{hex_rgba = RED1, stop = 0.0},
|
||||||
Color.ColorStop{hex_rgba = RED3, stop = 0.5},
|
Color.ColorStop{hex_rgba = RED3, stop = 0.5},
|
||||||
Color.ColorStop{hex_rgba = RED1, stop = 1.0}
|
Color.ColorStop{hex_rgba = RED1, stop = 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local PURPLE1 = 0xeecfff
|
||||||
|
local PURPLE3 = 0x9523ff
|
||||||
M.PURPLE_ROUNDED = Color.Gradient{
|
M.PURPLE_ROUNDED = Color.Gradient{
|
||||||
Color.ColorStop{hex_rgba = PURPLE3, stop = 0.0},
|
Color.ColorStop{hex_rgba = PURPLE3, stop = 0.0},
|
||||||
Color.ColorStop{hex_rgba = PURPLE1, stop = 0.5},
|
Color.ColorStop{hex_rgba = PURPLE1, stop = 0.5},
|
||||||
Color.ColorStop{hex_rgba = PURPLE3, stop = 1.0}
|
Color.ColorStop{hex_rgba = PURPLE3, stop = 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
M.TRANSPARENT_BLACK = Color.init{hex_rgba = BLACK, force_alpha = 0.7}
|
|
||||||
|
|
||||||
M.TRANSPARENT_BLUE = Color.Gradient{
|
M.TRANSPARENT_BLUE = Color.Gradient{
|
||||||
Color.ColorStop{hex_rgba = BLUE3, stop = 0.0, force_alpha = 0.2},
|
Color.ColorStop{hex_rgba = BLUE3, stop = 0.0, alpha = 0.2},
|
||||||
Color.ColorStop{hex_rgba = BLUE1, stop = 1.0, force_alpha = 1.0}
|
Color.ColorStop{hex_rgba = BLUE1, stop = 1.0, alpha = 1.0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- plot patterns
|
||||||
|
local PLOT_BLUE1 = 0x003f7c
|
||||||
|
local PLOT_BLUE2 = 0x1e90ff
|
||||||
|
local PLOT_BLUE3 = 0x316ece
|
||||||
|
local PLOT_BLUE4 = 0x8cc7ff
|
||||||
|
M.PLOT_LINE_BLUE = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_BLUE1, stop = 0.0},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_BLUE2, stop = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
M.PLOT_FILL_BLUE = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_BLUE3, stop = 0.0, alpha = 0.2},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_BLUE4, stop = 1.0, alpha = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
local PLOT_PURPLE1 = 0x3e0077
|
||||||
|
local PLOT_PURPLE2 = 0x9523ff
|
||||||
|
local PLOT_PURPLE3 = 0x7a30a3
|
||||||
|
local PLOT_PURPLE4 = 0xeac4ff
|
||||||
|
M.PLOT_LINE_PURPLE = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_PURPLE1, stop = 0.0},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_PURPLE2, stop = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
M.PLOT_FILL_PURPLE = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_PURPLE3, stop = 0.0, alpha = 0.2},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_PURPLE4, stop = 1.0, alpha = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
local PLOT_YELLOW1 = 0x231f00
|
||||||
|
local PLOT_YELLOW2 = 0x7c6f00
|
||||||
|
local PLOT_YELLOW3 = 0x8c8225
|
||||||
|
local PLOT_YELLOW4 = 0xfff387
|
||||||
|
M.PLOT_LINE_YELLOW = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_YELLOW1, stop = 0.0},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_YELLOW2, stop = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
M.PLOT_FILL_YELLOW = Color.Gradient{
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_YELLOW3, stop = 0.0, alpha = 0.2},
|
||||||
|
Color.ColorStop{hex_rgba = PLOT_YELLOW4, stop = 1.0, alpha = 1.0}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- panel pattern
|
||||||
|
M.TRANSPARENT_BLACK = Color.init{hex_rgba = 0x000000, alpha = 0.7}
|
||||||
|
|
||||||
M = Util.set_finalizer(M, function() print('Cleaning up Patterns.lua') end)
|
M = Util.set_finalizer(M, function() print('Cleaning up Patterns.lua') end)
|
||||||
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
Loading…
Reference in New Issue