ps 또는 top에서 공유되지 않은(개인) 메모리 사용을 기준으로 프로세스를 정렬할 수 있는 방법이 있습니까?

ps 또는 top에서 공유되지 않은(개인) 메모리 사용을 기준으로 프로세스를 정렬할 수 있는 방법이 있습니까?

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는 공유 정보조차 전혀 노출하지 않습니다!

내가 뭔가를 놓치고 있다고 말해주세요.

관련 정보