Add hugepages draw

This commit is contained in:
2025-12-30 14:36:41 +00:00
parent 0470e8aecb
commit d483a74582
6 changed files with 42 additions and 5 deletions
+19 -1
View File
@@ -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);
@@ -35,6 +35,24 @@ namespace display::ui::bar
// можно добавить метод drawRect в Framebuffer
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)
+1 -1
View File
@@ -13,7 +13,7 @@ namespace display::ui::bar
void draw(display::graphics::Framebuffer &framebuffer,
int x, int y,
float value); // 0.0 .. 1.0
float value, float overlay_value = 0.0); // 0.0 .. 1.0
private:
int width;
+5 -2
View File
@@ -93,9 +93,11 @@ namespace display::ui::hostblock
SECTION_GAP;
// ===== Memory bar =====
float memValue, swapValue = 0.0f;
float memValue, swapValue = 0.0f, hugepagesValue = 0.0f;
if (metrics.memory.memory.total > 0)
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(
fb,
@@ -114,13 +116,14 @@ namespace display::ui::hostblock
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(
fb,
x + PADDING,
cursorY,
std::clamp(swapValue, 0.0f, 1.0f));
text.drawTextOutlined(fb,
x + MEM_BAR_TEXT_PADDING_X,
cursorY + 8,
+10 -1
View File
@@ -207,7 +207,7 @@ namespace metrics
uint64_t value;
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)
{
@@ -219,6 +219,12 @@ namespace metrics
swap_total = value * 1024;
else if (key == "SwapFree:")
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;
@@ -228,6 +234,9 @@ namespace metrics
memory.swap.total = swap_total;
memory.swap.available = 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;
}
+6
View File
@@ -52,6 +52,9 @@ namespace metrics
buf.writeUint64(memory.swap.used);
buf.writeUint64(memory.swap.available);
buf.writeUint64(memory.swap.total);
buf.writeUint64(memory.hugepages.used);
buf.writeUint64(memory.hugepages.available);
buf.writeUint64(memory.hugepages.total);
// Disks
buf.writeUint8(static_cast<uint8_t>(disks.size()));
@@ -98,6 +101,9 @@ namespace metrics
h.memory.swap.used = buf.readUint64();
h.memory.swap.available = 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
uint8_t numDisks = buf.readUint8();
+1
View File
@@ -8,5 +8,6 @@ namespace metrics
{
MemoryMetrics memory;
MemoryMetrics swap;
MemoryMetrics hugepages;
};
} // namespace metrics