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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -8,5 +8,6 @@ namespace metrics
|
||||
{
|
||||
MemoryMetrics memory;
|
||||
MemoryMetrics swap;
|
||||
MemoryMetrics hugepages;
|
||||
};
|
||||
} // namespace metrics
|
||||
|
||||
Reference in New Issue
Block a user