상단의 VSIZE 값이 ps의 VSZ(가상 세트 크기) 값과 다른 이유는 무엇입니까?

상단의 VSIZE 값이 ps의 VSZ(가상 세트 크기) 값과 다른 이유는 무엇입니까?

psVSZ in이 응용 프로그램에 할당된 전체 주소 공간이라는 것을 알고 있으며 때로는 vsize( psLinux 매뉴얼 페이지에 언급됨)로 별칭이 지정되지만 VSIZE의 정의는 무엇입니까 top? iPhone의 최고 출력은 Linux의 최고 출력과 다릅니다.

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

답변1

Linux 메모리 시스템은 많은 메모리 최적화 유틸리티와 메모리 공유 루틴으로 가득 차 있어 메모리가 어떻게 공유되고 소비되는지에 대한 아이디어를 성가신 접근 방식으로 만듭니다. ps 및 기타 ps 관련 명령의 출력은 파일 시스템의 데이터에 따라 처리됩니다 /proc. 특히 psRSS(상주 메모리 크기)와 VSIZE(가상 메모리 크기)가 모두 중요하지만 VSIZE는 정확한 메모리 사용량을 보여주지 않으며, VSIZE와 rss의 차이점은 실제로 프로그램 실행 중에 할당하려고 의도한 메모리 크기입니다. 초기화 하지만 아직 인용되지 않았을 수도 있습니다. 프로그램에 링크된 라이브러리가 많이 있을 수 있지만 실제 프로그램이 실행될 때 참조되지 않았기 때문에 아직 로드되지 않은 것과 같습니다. RSS는 프로그램에서 실제로 사용하는 전체 메모리를 제공하지만 할당된 메모리의 대부분이 동일한 프로세스의 다른 인스턴스나 다른 프로세스와 공유될 수 있으므로 메모리 소비에 대한 실제 그림을 제공하지 못할 수 있습니다. 아래를 내려다보면 /proc/<processid>/maps메모리 사용량을 대략적으로 알 수 있지만 때로는 오해의 소지가 있을 수 있습니다. 명령줄에서 사용되며 pmap -x <pid>전파를 보는 데 유용합니다.

종종 더 나은 유틸리티는 free및 입니다 vmstat. free현재 전체 메모리 소비 세부 정보가 제공되며 vmstat를 사용하여 업데이트 빈도를 확인할 수 있습니다.

관련 정보