Skip to content
Snippets Groups Projects
Commit f9bab998 authored by Ruben Otto's avatar Ruben Otto :crab:
Browse files

feat: add memory usage client

parent 7d7e971d
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ BINARY_DIR = /usr/bin
SYSTEMD_DIR = /etc/systemd/system
DAEMON = daemon
CLIENTS = dummy cpu_temp
CLIENTS = dummy cpu_temp mem_usage
SYSTEM_NAME = sibyl
......
add_subdirectory(cpu_temp)
add_subdirectory(dummy)
add_subdirectory(mem_usage)
add_executable(mem_usage
src/mem_usage.c
)
target_link_libraries(mem_usage
PRIVATE common
)
#include "../../../common/include/measurement.h"
#include "../../../common/include/userspace_comm.h"
#include <errno.h>
#include <fcntl.h>
#include <linux/sysinfo.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/sysinfo.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if (argc < 3 || argc > 3) {
printf("Invalid arguments provided");
return EXIT_FAILURE;
}
userspace_send_handle_t userspace_send_handle;
if (create_userspace_send_handle(&userspace_send_handle) == -1) {
perror("Failed to open message queue");
return EXIT_FAILURE;
}
int id = atoi(argv[1]);
int sleep_ms = atoi(argv[2]);
printf("Started mem usage (id: %d, delay: %dms)\n", id, sleep_ms);
while (1) {
struct sysinfo meminfo;
sysinfo(&meminfo);
measurement_t measurement = {
.data.uint64 = meminfo.totalram - meminfo.freeram,
.datatype = UINT64,
.id = id,
};
if (send_userspace_message(&userspace_send_handle, measurement) == -1) {
if (errno == EIDRM || errno == EINVAL) {
printf("Message queue got closed\n");
break;
}
perror("Failed to send message");
}
usleep(sleep_ms * 1000);
}
destroy_userspace_send_handle(&userspace_send_handle);
return EXIT_SUCCESS;
}
[Unit]
Description=Sibyl Client Memory Usage (incl. Caches & Buffers)
Wants=sibyl-daemon.service
After=sibyl-daemon.service
[Service]
ExecStart=/usr/bin/sibyl-mem-usage 3 250
Restart=always
[Install]
WantedBy=multi-user.target
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment