rkmon — это модуль ядра Linux, предоставляющий интерфейс для получения
информации о состоянии процессора, частот, памяти и сетевых интерфейсов
в режиме реального времени.
Модуль создаёт символьное устройство и отдаёт агрегированные данные в
удобном текстовом формате, а также поддерживает ioctl-запросы.
- Загрузка каждого ядра (в процентах)
- Текущая частота (Гц)
- Поддержка до 16 CPU
- Общий объём RAM
- Свободная RAM
- Список сетевых интерфейсов
- MAC-адрес
- IPv4 / IPv6
- Статус линка
- RX/TX пакеты и ошибки
- RX/TX скорость (KB/s)
- ioctl-интерфейс для запроса данных по интерфейсу
При загрузке модуля автоматически регистрируется символьное устройство:
/dev/rkmon
Чтение из устройства возвращает многострочный отчёт:
- количество CPU
- загрузка каждого CPU
- частоты CPU
- память (total/free)
- список сетевых интерфейсов и их параметры
ioctl(fd, RKMON_SET_UPDATE_RATE, int ms)Пределы:
min: 50 ms
max: 5000 ms
struct rkmon_net_request req;
ioctl(fd, RKMON_GET_NETINFO, &req);struct rkmon_cpu_request req;
ioctl(fd, RKMON_GET_CPUINFO, &req);Структуры определены в rkmon_uapi.h.
Основные файлы:
rkmon_dev.c — реализация символьного устройства и логики вывода
cpu_update.c / .h — мониторинг CPU
mem_update.c / .h — мониторинг памяти
network_update.c / .h — мониторинг сети
rkmon_uapi.h — интерфейс взаимодействия ядро → userspace
Лицензия GPLv2
Автор: Alexey Kuznetsov GitHub: TheCakeMan1
NUM_CPU: 8
LOADS_CPU: 0 0 0 0 0 0 0 0
FREQ_CPU: 1800000 1800000 1800000 1800000 2256000 2256000 2256000 2256000
TOTAL/FREE MEM: 16335248 10653056
NUM_INTERFACE: 2
NET: lo
LINC: 1
MAC: 00:00:00:00:00:00
IPv4: 127.0.0.1
IPv6: 0000:0000:0000:0000:0000:0000:0000:0001
RX/packets/errors: 139089 828043 0
TX/packets/errors: 139089 828043 0
NET: enP3p49s0
LINK: 1
MAC: c0:74:2b:fd:ce:9b
IPv4: 192.168.27.199
IPv6: fe80:0000:0000:0000:3032:7090:84fd:6f11
RX/packets/errors: 15819 557604 0
TX/packets/errors: 18014398509463776 469211 0
Смотри: INSTALL.md