/
phprus
/
github_dpdk
Обзор
Документация
Войти
/
phprus
/
github_dpdk
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
usertools/telemetry-endpoints/memory.py
37 строк
1 KB
Robin Jarry
usertools: add telemetry exporter
09 июл 2024, 08:06
09 июл 2024, 08:06
d94ebd6
Код
Авторство
О чём код?
# SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Robin Jarry MEM_TOTAL = "total_bytes" MEM_USED = "used_bytes" def info() -> "dict[Name, tuple[Description, Type]]": return { MEM_TOTAL: ("The total size of reserved memory in bytes.", "gauge"), MEM_USED: ("The currently used memory in bytes.", "gauge"), } def metrics(sock: "TelemetrySocket") -> "list[tuple[Name, Value, Labels]]": zones = {} used = 0 for zone in sock.cmd("/eal/memzone_list") or []: z = sock.cmd("/eal/memzone_info", zone) start = int(z["Hugepage_base"], 16) end = start + (z["Hugepage_size"] * z["Hugepage_used"]) used += z["Length"] for s, e in list(zones.items()): if s < start < e < end: zones[s] = end break if start < s < end < e: del zones[s] zones[start] = e break else: zones[start] = end return [ (MEM_TOTAL, sum(end - start for (start, end) in zones.items()), {}), (MEM_USED, max(0, used), {}), ]