어떤 프로세스에서만 얼마나 많은 메모리가 사용되는지 어떻게 알 수 있나요?
답변1
1 - "ps"를 사용하세요
가장 많은 메모리를 사용하는 상위 10개 프로세스가 표시됩니다.
ps aux --sort=-%mem | awk 'NR<=10{print $0}'
원한다면 10을 조작할 수 있습니다.
2 - "상단" 사용
상단 키를 켜면 m
메모리 사용량에 따라 프로세스가 단축됩니다.
답변2
나는 시간이 지남에 따라 상황이 변하는 것을 볼 수 있도록 htop을 실행하는 것을 선호합니다.
터미널 창을 사용하여 모든 최상위 프로세스를 표시하며 지속적으로 자동으로 업데이트됩니다.
CPU(기본값) 또는 메모리를 기준으로 정렬하도록 설정할 수 있습니다.
시스템에 없으면 쉽게 설치할 수 있습니다.
답변3
단일 프로세스가 소비하는 메모리 양을 결정하는 문제는 공개된 질문이며 대부분 정의를 기반으로 합니다.
이 문제는 주로 공유 라이브러리로 인해 발생합니다. 다른 3개의 프로세스와 동일한 .so를 사용하는 프로세스의 메모리 사용량을 어떻게 계산합니까? lib가 없으면 실행될 수 없기 때문에 lib가 할당한 전체 메모리를 소비한다고 말할 수 있습니까? 비례적인 부분(동시에 사용하는 3개의 다른 프로세스가 있으므로 1/4 - pss)을 소비한다고 말할 수 있습니까? 프로세스가 실행하기 위해 로드하는 라이브러리와 독립적이라고 말씀하시겠습니까?
교체된 메모리를 포함하시겠습니까, 아니면 실제 RAM 상주 페이지만 포함하시겠습니까? 멀티스레딩이나 하위 프로세스는 어떻습니까? 변경 사항이 없는 한 포크는 상위 프로세스와 동일한 메모리를 사용합니다. 각 프로세스에 대한 메모리 할당을 계산합니까, 아니면 상위 프로세스만 계산합니까?
이 질문은 여기와 다른 사이트에서 여러 번 묻고 답변되었으므로 몇 가지 링크와 일반적인 결론을 제시하겠습니다.
먼저 해당 주제에 대해 가장 많이 인용된 기사 -https://emilics.com/notebook/enblog/p871.html
동일한 주제에 대한 일부 SO 및 U&L 질문:
https://stackoverflow.com/questions/7880784/what-is-rss-and-vsz-in-linux-memory-management
https://stackoverflow.com/questions/118307/a-way-to-define-a-processs-real-memory-usage-ie-private-dirty-rss
Linux에서 메모리 사용량을 올바르게 결정
간단히 말해서 - /prc/[pid]/smap
기반문서
/proc/PID/smaps는 각 프로세스 맵의 메모리 소비를 보여주는 맵 기반 확장입니다.
또는 사용지도주문하다.