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