저는 Linux에서 실행되는 C 언어 프로그램을 작성하려고 합니다. 기본적으로 다음과 같이 표시되어야 하는 통계를 플롯하려고 합니다.pid, number of process, page fault(major/minor) and total number of page faults.
val, pid, pagefault, number of processes, total number of pages faults(Majpr+Minor)
1 127 major 1 2323
아이디어를 위해 코드 솔루션을 다음에서 가져왔습니다.주요 페이지 오류를 생성합니다.해당 코드는 다음과 같습니다.
#include <fcntl.h>
#include <stdio.h>
#include <sys/mman.h>
#include <sys/stat.h>
int main(int argc, char ** argv) {
int fd = open(argv[1], O_RDONLY);
struct stat stats;
fstat(fd, &stats);
posix_fadvise(fd, 0, stats.st_size, POSIX_FADV_DONTNEED);
char * map = (char *) mmap(NULL, stats.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (map == MAP_FAILED) {
perror("Failed to mmap");
return 1;
}
int result = 0;
int i;
for (i = 0; i < stats.st_size; i++) {
result += map[i];
}
munmap(map, stats.st_size);
return result;
}
이 코드는 이를 수행하지만 너무 많은 것을 제공합니다. 나는 또한 이 링크를 보았다:https://stackoverflow.com/questions/23302763/measure-page-faults-from-ac-program 그러나 페이지 오류(주/부)가 어떻게 발생하는지 파악하지 못했습니다. 누구든지 중대한 오류와 사소한 오류를 확인하는 방법을 말해 줄 수 있습니까?