단일 프로세스 또는 프로세스 그룹에 대해 사소한 페이지 오류와 주요 페이지 오류를 얻는 방법은 무엇입니까?

단일 프로세스 또는 프로세스 그룹에 대해 사소한 페이지 오류와 주요 페이지 오류를 얻는 방법은 무엇입니까?

저는 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 그러나 페이지 오류(주/부)가 어떻게 발생하는지 파악하지 못했습니다. 누구든지 중대한 오류와 사소한 오류를 확인하는 방법을 말해 줄 수 있습니까?

관련 정보