맨페이지에서top
nMaj -- Major Page Fault Count
The number of major page faults that have occurred for a task. A
page fault occurs when a process attempts to read from or write
to a virtual page that is not currently present in its address
space. **A major page fault is when auxiliary storage access is
involved in making that page available.**
nMin -- Minor Page Fault count
The number of minor page faults that have occurred for a task. A
page fault occurs when a process attempts to read from or write
to a virtual page that is not currently present in its address
space. **A minor page fault does not involve auxiliary storage
access in making that page available.**
내가 맞다면 페이지 폴트 처리는 물리적 메모리에서 누락된 필수 데이터를 스왑에서 물리적 메모리로 전송하는 문제입니다. 스왑은 하드 드라이브나 SSD와 같은 스토리지의 일부입니다. 그렇다면 페이지 오류는 무엇을 의미할 수도 있고 의미하지 않을 수도 있습니까?페이지를 사용할 수 있도록 보조 저장소 액세스가 필요합니다.?
감사해요.
답변1
주요 페이지 오류에만 보조 저장소(즉스왑이든 다른 곳이든 디스크에서 읽기,예를 들어바이너리 형식으로 페이징하는 경우).
사소한 페이지 오류는 디스크에서 읽지 않고도 해결할 수 있는 오류입니다.
- 메모리의 다른 곳에 매핑된 데이터와 관련된 페이지 오류(예를 들어프로세스 간 메모리 공유 가능)
- 새로 할당된 메모리의 페이지 오류(모두 0인 페이지 및 쓰기 시 복사 할당 사용)
- 경우에 따라 회수 대상으로 표시되었지만 아직 회수되지 않은 데이터
(이것은 완전한 것은 아닙니다).
답변2
예를 들어 데이터나 코드가 메모리에 있지만 프로세스에 매핑되지 않은 경우 사소한 페이지 오류가 발생합니다.
다른 프로세스에서 사용되는 공유 라이브러리를 고려하십시오. 귀하의 프로세스는 동일한 라이브러리를 로드하려고 하므로 ld(제 생각에는 libc/glibc를 통해?)가 페이지 오류 생성 문제를 발생시킵니다. 커널은 데이터가 이미 메모리에 있다는 것을 알고 이를 프로세스에 매핑합니다. 디스크에서 로드할 필요가 없습니다...