
Linux 명령을 사용하여 모든 프로세스에 대한 멋진 메모리 맵을 얻을 수 있습니다.
pmap $(ps -A | awk '{print $1}'|grep -v PID) | sort | grep \^0
그것은 다음과 같습니다
...
00007fd6dbf45000 4K rw--- /lib/libnss_compat-2.11.1.so
00007fd6dbf46000 1524K r-x-- /lib/libc-2.11.1.so
00007fd6dc0c3000 2044K ----- /lib/libc-2.11.1.so
...
모든 프로세스의 메모리 맵이 여기에 병합됩니다. 하지만 커널에 메모리 페이지가 있는 정보가 누락되었습니다. "완전한 메모리 맵"을 위한 유사한 도구가 있습니까?
답변1
당신의 명령은 별로 의미가 없습니다. 각 프로세스에 대해 보고된 주소는 pmap
해당 프로세스의 자체 주소 공간, 즉 가상 메모리에서만 유효합니다. 기술적으로는 서로 다른 페이지에 해당하지만 일종의 "중복"됩니다. 그 중 일부는 RAM이 아닌 디스크에 있습니다.
반면에 커널이 소유한 페이지는 실제 메모리에 저장됩니다.
답변2
더 나은 접근 방식은 sysrq를 사용하는 것입니다.
다음을 실행하고 /var/log/messages를 확인하세요.
# echo m > /proc/sysrq-trigger
이렇게 하면 영역별 메모리 덤프가 제공됩니다. 다음 URL에서 결제하세요.
https://www.kernel.org/doc/gorman/html/understand/understand005.html