내가 아는 한 VSS RSS PSS와 USS 등 여러 가지 메모리 개념이 있습니다. 여기서 USS(고유 세트 크기)는 프로세스 전용 물리적 메모리입니다(필요한 경우 수정해 주세요).
어떤 프로세스가 물리적 메모리를 너무 많이 사용하고 있는지 알려주는 데 매우 유용한 값이 되어야 한다고 생각합니다.
그런데 이 값을 어떻게 얻을 수 있을까요? ps를 통해 또는 /proc 파일을 통해?
(smem 도구가 도움이 될 수 있다는 것을 알고 있지만 내장된 방법이 있습니까?)
20231015 업데이트
이 답변/proc/<pid>/smaps_rollup에 합계 값이 있다고 언급했습니다.
grep "Private" /proc/1748/smaps_rollup
Private_Clean: 55700 kB
Private_Dirty: 67628 kB
Private_Hugetlb: 0 kB
따라서 전체 값을 얻을 수 있습니다.
awk '/Private/{ sum += $2 } END { print sum }' /proc/1748/smaps_rollup
답변1
정답은/proc/pid/smaps에서 프로세스 메모리 사용량에 대한 정보 얻기이를 수행하기 위한 지침이 포함되어 있습니다. 구체적이고 정확한 명령을 제공하지는 않지만 USS
적용되는 명령을 제시하는 데 필요한 모든 정보와 예를 제공합니다 USS
.
RSS
(대략 + ) 의 항목을 합산하여 얻을 수 있습니다 (공유/개인 공유/더티 항목을 합산할 필요는 없음).Rss:
smaps
awk '/Rss:/{ sum += $2 } END { print sum }' /proc/$$/smaps
[...]
USS
에는 보고되지 않았지만smaps
실제로는 비공개 지도의 합이므로 같은 방법으로 얻을 수도 있습니다.
따라서 USS
비공개 맵의 합계인 경우 summing 과 동일하지만 RSS
모든 행에 대해 합산하는 대신 Rss:
모든 비공개 맵에 대해 합산합니다( /Private/
대신 /Rss:/
).
awk '/Private/{ sum += $2 } END { print sum }' /proc/$$/smaps