%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%82%AC%EC%9A%A9%EC%9D%84%20%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%A0%95%EB%A0%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
pmap -x
예를 들어 익명 및 스택 매핑을 합산하여 비공유 메모리 사용량을 계산할 수 있었습니다.
sudo pmap -x $THE_PID |egrep 'anon|stack' | awk '{print $2}' | paste -sd+ | bc
하지만 비슷한 정보를 얻을 수 있는 방법을 ps
전혀 찾을 수 없습니다. 열 top
을 표시 SHR
하지만 공유되지 않은 메모리를 기준으로 정렬하는 방법을 제공하지 않는 것 같습니다. RSS에는 공유 페이지가 포함되어 있지만 프로세스에서 접촉한 공유 페이지는 AFAICS에만 있으므로 RSS로 정렬하는 것은 유용하지 않습니다.
따라서 동일한 16GB 공유 주소 공간을 사용하는 두 개의 프로세스가 있는 경우 공유 메모리를 더 많이 사용하는 프로세스를 기준으로 정렬됩니다. 둘 다 동일한 양의 shmem을 건드리거나 그에 가깝지 않는 한 더 많은 개인용(비공유) 메모리를 할당한 것은 아닙니다.
공유 라이브러리의 읽기/쓰기 매핑과 조상의 쓰기 시 복사 페이지를 공유하는 fork
편집은 되었지만 편집은 안 되는 프로세스에서 유사한 문제가 발생합니다.exec
이건... 도움이 안 돼요.
top
표현식별로 출력을 정렬하는 방법을 살펴보았습니다 . 그러나 그것이 정렬 구문에서 지원한다면 나는 그것을 알아낼 수 없습니다.
이것은 너무나 당연해 보이지만 ps는 공유 정보조차 전혀 노출하지 않습니다!
내가 뭔가를 놓치고 있다고 말해주세요.