Add hugepages draw
This commit is contained in:
@@ -8,7 +8,7 @@ namespace display::ui::bar
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bar::draw(display::graphics::Framebuffer &framebuffer, int x, int y, float value)
|
void Bar::draw(display::graphics::Framebuffer &framebuffer, int x, int y, float value, float overlay_value)
|
||||||
{
|
{
|
||||||
value = std::clamp(value, 0.0f, 1.0f);
|
value = std::clamp(value, 0.0f, 1.0f);
|
||||||
|
|
||||||
@@ -35,6 +35,24 @@ namespace display::ui::bar
|
|||||||
// можно добавить метод drawRect в Framebuffer
|
// можно добавить метод drawRect в Framebuffer
|
||||||
framebuffer.drawRect(x, y, width, height, style.border);
|
framebuffer.drawRect(x, y, width, height, style.border);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (overlay_value)
|
||||||
|
{
|
||||||
|
if (orientation == Orientation::Horizontal)
|
||||||
|
{
|
||||||
|
int fillWidth = static_cast<int>(width * value);
|
||||||
|
int overlayWidth = static_cast<int>(width * overlay_value);
|
||||||
|
int overlayX = x + (overlayWidth - fillWidth);
|
||||||
|
framebuffer.fillRect(overlayX, y, overlayWidth, height, display::graphics::White());
|
||||||
|
}
|
||||||
|
else // Vertical
|
||||||
|
{
|
||||||
|
int fillHeight = static_cast<int>(height * value);
|
||||||
|
int overlayHeight = static_cast<int>(height * overlay_value);
|
||||||
|
int overlayY = y + (overlayHeight - fillHeight);
|
||||||
|
framebuffer.fillRect(x, overlayY + (height - overlayHeight), width, overlayHeight, display::graphics::White());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
display::graphics::Color Bar::valueToColor(float value)
|
display::graphics::Color Bar::valueToColor(float value)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace display::ui::bar
|
|||||||
|
|
||||||
void draw(display::graphics::Framebuffer &framebuffer,
|
void draw(display::graphics::Framebuffer &framebuffer,
|
||||||
int x, int y,
|
int x, int y,
|
||||||
float value); // 0.0 .. 1.0
|
float value, float overlay_value = 0.0); // 0.0 .. 1.0
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int width;
|
int width;
|
||||||
|
|||||||
@@ -93,9 +93,11 @@ namespace display::ui::hostblock
|
|||||||
SECTION_GAP;
|
SECTION_GAP;
|
||||||
|
|
||||||
// ===== Memory bar =====
|
// ===== Memory bar =====
|
||||||
float memValue, swapValue = 0.0f;
|
float memValue, swapValue = 0.0f, hugepagesValue = 0.0f;
|
||||||
if (metrics.memory.memory.total > 0)
|
if (metrics.memory.memory.total > 0)
|
||||||
memValue = static_cast<float>(metrics.memory.memory.used) / static_cast<float>(metrics.memory.memory.total);
|
memValue = static_cast<float>(metrics.memory.memory.used) / static_cast<float>(metrics.memory.memory.total);
|
||||||
|
if (metrics.memory.hugepages.total > 0)
|
||||||
|
hugepagesValue = static_cast<float>(metrics.memory.hugepages.total) / static_cast<float>(metrics.memory.memory.total);
|
||||||
|
|
||||||
memBar.draw(
|
memBar.draw(
|
||||||
fb,
|
fb,
|
||||||
@@ -114,13 +116,14 @@ namespace display::ui::hostblock
|
|||||||
|
|
||||||
if (metrics.memory.swap.total > 0)
|
if (metrics.memory.swap.total > 0)
|
||||||
{
|
{
|
||||||
swapValue = metrics.memory.swap.used / metrics.memory.swap.total;
|
swapValue = static_cast<float>(metrics.memory.swap.used) / static_cast<float>(metrics.memory.swap.total);
|
||||||
|
|
||||||
memBar.draw(
|
memBar.draw(
|
||||||
fb,
|
fb,
|
||||||
x + PADDING,
|
x + PADDING,
|
||||||
cursorY,
|
cursorY,
|
||||||
std::clamp(swapValue, 0.0f, 1.0f));
|
std::clamp(swapValue, 0.0f, 1.0f));
|
||||||
|
|
||||||
text.drawTextOutlined(fb,
|
text.drawTextOutlined(fb,
|
||||||
x + MEM_BAR_TEXT_PADDING_X,
|
x + MEM_BAR_TEXT_PADDING_X,
|
||||||
cursorY + 8,
|
cursorY + 8,
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ namespace metrics
|
|||||||
uint64_t value;
|
uint64_t value;
|
||||||
std::string unit;
|
std::string unit;
|
||||||
|
|
||||||
uint64_t mem_total = 0, mem_available = 0, swap_total = 0, swap_available = 0;
|
uint64_t mem_total = 0, mem_available = 0, swap_total = 0, swap_available = 0, hugepages_total = 0, hugepages_available = 0, hugepages_size = 0;
|
||||||
|
|
||||||
while (f >> key >> value >> unit)
|
while (f >> key >> value >> unit)
|
||||||
{
|
{
|
||||||
@@ -219,6 +219,12 @@ namespace metrics
|
|||||||
swap_total = value * 1024;
|
swap_total = value * 1024;
|
||||||
else if (key == "SwapFree:")
|
else if (key == "SwapFree:")
|
||||||
swap_available = value * 1024;
|
swap_available = value * 1024;
|
||||||
|
else if (key == "HugePages_Total:")
|
||||||
|
hugepages_total = value;
|
||||||
|
else if (key == "HugePages_Free:")
|
||||||
|
hugepages_available = value;
|
||||||
|
else if (key == "Hugepagesize:")
|
||||||
|
hugepages_size = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Memory memory;
|
Memory memory;
|
||||||
@@ -228,6 +234,9 @@ namespace metrics
|
|||||||
memory.swap.total = swap_total;
|
memory.swap.total = swap_total;
|
||||||
memory.swap.available = swap_available;
|
memory.swap.available = swap_available;
|
||||||
memory.swap.used = swap_total - swap_available;
|
memory.swap.used = swap_total - swap_available;
|
||||||
|
memory.hugepages.total = hugepages_total * hugepages_size;
|
||||||
|
memory.hugepages.available = hugepages_available * hugepages_size;
|
||||||
|
memory.hugepages.used = hugepages_total - hugepages_available;
|
||||||
return memory;
|
return memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ namespace metrics
|
|||||||
buf.writeUint64(memory.swap.used);
|
buf.writeUint64(memory.swap.used);
|
||||||
buf.writeUint64(memory.swap.available);
|
buf.writeUint64(memory.swap.available);
|
||||||
buf.writeUint64(memory.swap.total);
|
buf.writeUint64(memory.swap.total);
|
||||||
|
buf.writeUint64(memory.hugepages.used);
|
||||||
|
buf.writeUint64(memory.hugepages.available);
|
||||||
|
buf.writeUint64(memory.hugepages.total);
|
||||||
|
|
||||||
// Disks
|
// Disks
|
||||||
buf.writeUint8(static_cast<uint8_t>(disks.size()));
|
buf.writeUint8(static_cast<uint8_t>(disks.size()));
|
||||||
@@ -98,6 +101,9 @@ namespace metrics
|
|||||||
h.memory.swap.used = buf.readUint64();
|
h.memory.swap.used = buf.readUint64();
|
||||||
h.memory.swap.available = buf.readUint64();
|
h.memory.swap.available = buf.readUint64();
|
||||||
h.memory.swap.total = buf.readUint64();
|
h.memory.swap.total = buf.readUint64();
|
||||||
|
h.memory.hugepages.used = buf.readUint64();
|
||||||
|
h.memory.hugepages.available = buf.readUint64();
|
||||||
|
h.memory.hugepages.total = buf.readUint64();
|
||||||
|
|
||||||
// Disks
|
// Disks
|
||||||
uint8_t numDisks = buf.readUint8();
|
uint8_t numDisks = buf.readUint8();
|
||||||
|
|||||||
@@ -8,5 +8,6 @@ namespace metrics
|
|||||||
{
|
{
|
||||||
MemoryMetrics memory;
|
MemoryMetrics memory;
|
||||||
MemoryMetrics swap;
|
MemoryMetrics swap;
|
||||||
|
MemoryMetrics hugepages;
|
||||||
};
|
};
|
||||||
} // namespace metrics
|
} // namespace metrics
|
||||||
|
|||||||
Reference in New Issue
Block a user