Compare commits
6 Commits
1fa3473911
...
psi-mem
Author | SHA1 | Date | |
---|---|---|---|
e09aacd35f | |||
08c476910f | |||
658772dc0c | |||
1e02fc7640 | |||
a702bed037 | |||
2f9d714642 |
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*
|
||||
!.gitignore
|
||||
!monitor.c
|
6
Makefile
6
Makefile
@ -1,13 +1,13 @@
|
||||
monitor: monitor.c
|
||||
psi-monitor: monitor.c
|
||||
gcc -o $@ $<
|
||||
|
||||
create_load: create_load.c
|
||||
gcc -o $@ $< -lpthread
|
||||
|
||||
all: monitor create_load
|
||||
all: psi-monitor create_load
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -f monitor create_load
|
||||
rm -f psi-monitor monitor create_load
|
||||
|
||||
|
33
monitor.c
33
monitor.c
@ -6,12 +6,12 @@
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
#define CPU_TRACKING_WINDOW_SECS 1
|
||||
#define IO_TRACKING_WINDOW_SECS 1
|
||||
#define MEM_TRACKING_WINDOW_SECS 1
|
||||
#define CPU_TRIGGER_THRESHOLD_MS 100
|
||||
#define IO_TRIGGER_THRESHOLD_MS 100
|
||||
#define MEM_TRIGGER_THRESHOLD_MS 100
|
||||
#define CPU_TRACKING_WINDOW_SECS 5
|
||||
#define IO_TRACKING_WINDOW_SECS 5
|
||||
#define MEM_TRACKING_WINDOW_SECS 5
|
||||
#define CPU_TRIGGER_THRESHOLD_MS 1000
|
||||
#define IO_TRIGGER_THRESHOLD_MS 1000
|
||||
#define MEM_TRIGGER_THRESHOLD_MS 1000
|
||||
#define CPU_PRESSURE_FILE "/proc/pressure/cpu"
|
||||
#define IO_PRESSURE_FILE "/proc/pressure/io"
|
||||
#define MEM_PRESSURE_FILE "/proc/pressure/memory"
|
||||
@ -51,12 +51,13 @@ void setup_polling() {
|
||||
fds[FD_IO_IDX].fd = open(IO_PRESSURE_FILE, O_RDWR | O_NONBLOCK);
|
||||
if (fds[FD_IO_IDX].fd < 0)
|
||||
fatal_error("open(): " IO_PRESSURE_FILE);
|
||||
|
||||
/* Let's setup our MEM PSI trigger */
|
||||
fds[FD_MEM_IDX].fd = open(MEM_PRESSURE_FILE, O_RDWR | O_NONBLOCK);
|
||||
if (fds[FD_MEM_IDX].fd < 0)
|
||||
fatal_error("open(): " MEM_PRESSURE_FILE);
|
||||
|
||||
fds[FD_CPU_IDX].events = fds[FD_MEM_IDX].events = fds[FD_IO_IDX].events = POLLPRI;
|
||||
fds[FD_CPU_IDX].events = fds[FD_IO_IDX].events = fds[FD_MEM_IDX].events = POLLPRI;
|
||||
|
||||
char trigger[128];
|
||||
|
||||
@ -66,17 +67,17 @@ void setup_polling() {
|
||||
if (write(fds[FD_CPU_IDX].fd, trigger, strlen(trigger) + 1) < 0)
|
||||
fatal_error("write(): " CPU_PRESSURE_FILE);
|
||||
|
||||
snprintf(trigger, 128, "some %d %d", MEM_TRIGGER_THRESHOLD_MS * 1000, MEM_TRACKING_WINDOW_SECS * 1000000);
|
||||
printf("Trigger: %s\n", trigger);
|
||||
fflush(stdout);
|
||||
if (write(fds[FD_MEM_IDX].fd, trigger, strlen(trigger) + 1) < 0)
|
||||
fatal_error("write(): " MEM_PRESSURE_FILE);
|
||||
|
||||
snprintf(trigger, 128, "some %d %d", IO_TRIGGER_THRESHOLD_MS * 1000, IO_TRACKING_WINDOW_SECS * 1000000);
|
||||
printf("Trigger: %s\n", trigger);
|
||||
fflush(stdout);
|
||||
if (write(fds[FD_IO_IDX].fd, trigger, strlen(trigger) + 1) < 0)
|
||||
fatal_error("write(): " IO_PRESSURE_FILE);
|
||||
|
||||
snprintf(trigger, 128, "some %d %d", MEM_TRIGGER_THRESHOLD_MS * 1000, MEM_TRACKING_WINDOW_SECS * 1000000);
|
||||
printf("Trigger: %s\n", trigger);
|
||||
fflush(stdout);
|
||||
if (write(fds[FD_MEM_IDX].fd, trigger, strlen(trigger) + 1) < 0)
|
||||
fatal_error("write(): " MEM_PRESSURE_FILE);
|
||||
}
|
||||
|
||||
|
||||
@ -114,12 +115,12 @@ void wait_for_notification() {
|
||||
printf("CPU PSI event %d triggered.\n", cpu_event_counter++);
|
||||
fflush(stdout);
|
||||
}
|
||||
else if (i == FD_MEM_IDX) {
|
||||
printf("MEM PSI event %d triggered.\n", mem_event_counter++);
|
||||
else if (i == FD_IO_IDX) {
|
||||
printf("IO PSI event %d triggered.\n", mem_event_counter++);
|
||||
fflush(stdout);
|
||||
}
|
||||
else {
|
||||
printf("IO PSI event %d triggered.\n", io_event_counter++);
|
||||
printf("MEM PSI event %d triggered.\n", io_event_counter++);
|
||||
fflush(stdout);
|
||||
}
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user