COW 페이지없이 메모리를 측정하는 방법은 무엇입니까?


8

공유 및 기록 중 복사 페이지를 두 번 세지 않고 일련의 (포크 된) 프로세스가 차지하는 총 RSS 메모리를 어떻게 측정 할 수 있습니까?


1
매우 흥미로운 질문, +1- /proc/*/map파일을 심층 분석하면 가능 하지만 도구를 찾지 못하더라도 가능합니다. 주요 문제는 따라야 할 데이터 구조가 훨씬 복잡하다는 것입니다. 여기서 좋은 대답을 얻지 못하면 유닉스 SE를 사용해 볼 수도 있습니다.
peterh-Reinstate Monica

답변:


4

나는 이것을 위해 내 자신의 유틸리티를 작성했다 : https://gist.github.com/Eugeny/04ccfe8accf4bc74b0ca

init테스트를 위해 (pid 1)에 대해 실행 했으며 총보고 된 물리적 램 사용량 (htop 당)과 거의 같으므로 다소 정확하다고 생각합니다.

사용 예 :

~ » pstree -ap 15897
zsh,15897
  └─sudo,9783 make rundev
      └─make,9784 rundev
          └─sh,9785 -c cd ajenti-panel && ./ajenti-panel -v --autologin --plugins ../plugins --dev
              └─python ./ajenti,9786
                  ├─./ajenti-panel ,9834                              
                  ├─./ajenti-panel ,9795                     
                  └─{python ./ajenti},9796

~ » sudo ./memuse.py 15897
PID                 Commandline                          Frames (+unique)           VMEM
 - 15897            (/usr/bin/zsh                  ):      1776  +1776           7104 KB
  -  9783           (sudo make rundev              ):       608  +408            2432 KB
   -  9784          (make rundev                   ):       261  +98             1044 KB
    -  9785         (/bin/sh -c cd ajenti-panel && ):       166  +48              664 KB
     -  9786        (python ./ajenti-panel -v --aut):      9279  +8977          37116 KB
      -  9795       (./ajenti-panel worker [restric):      7637  +1334          30548 KB
      -  9834       (./ajenti-panel worker [session):      8972  +2639          35888 KB
----------------------------------------------------------------------------------------
TOTAL:                                                    15280                 61120 KB

2

어떤 도구에서 어떤 프로세스가 모든 매핑을 반복하고 주소를 비교하지 않고 어떤 맵을 공유 하는지를 결정하는 명확한 방법은 없습니다.

그러나 리눅스는 비례 설정 크기 로 알려진 합리적인 추정치를 제공 합니다 . 이것은 / proc / [pid]> / maps에보고됩니다.

이 값은 맵핑 크기를 동일한 맵핑이 열린 형제 / 부모 프로세스 수로 나눈 값입니다.

따라서 1MiB 매핑이 열려 있고 4 개의 다른 프로세스와 공유되는 1MiB가있는 프로그램에서 비례 세트 크기는 1MiB + (1Mib / 4) 또는 1.250 MiB입니다. 이 경우 RSS는 2MiB입니다.

PSS를 사용하여 실제 사용중인 메모리의 '좋은 추정치'를 계산하는 htop 플로팅 패치가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.