2017-05-24 3 views
0

프로그램에 필요한 메모리 양을 알아 내려고하고 있습니다. 이 프로그램의 여러 인스턴스를 실행해야하며 필요한 추가 RAM 용량을 파악하고 싶습니다. 제가 조사를 좀 해봤 내가 한 사용되는 메모리의 양을 찾기 위해 : 내가 이해하면 제대로 실제에있는 메모리의 양이 상주 메모리가의리눅스에서 프로세스가 사용하고있는 추가 물리적 메모리의 양을 확인하십시오.

Mem: 32880876k total, 7573308k used, 25307568k free, 192956k buffers 
Swap: 8241148k total,  0k used, 8241148k free, 4800560k cached 

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
27464 root  20 0 3107m 1.9g 19m S 99.6 6.0 0:37.78 krypton 

RES 다음 나에게 준 최고를, 램. 프로그램 인스턴스 2 개를 실행했을 때 두 필드의 RES 필드가 각각 약 5Gb 였지만 사용 된 총 메모리 (맨 위에 표시)는 예상 한대로 10Gb까지 올라가지 않았지만 그 대신에 1Gb.

나는 이것에 대한 연구를 한 결과 RES에 공유 메모리가 포함되어 있다는 것을 알았습니다. 위와 같은 시나리오를 사용하여 공유 메모리 SHR이 각각 4.7Gb 였음을 알았습니다. 따라서 간단한 빼기를 수행하면 약 0.3Gb가 발생하므로 프로그램을 2 개 실행할 때 4.7Gb + (0.3Gb) * 2 = 5.3Gb의 RAM이 필요합니까? 또한 SHR 메모리에는 가상 메모리도 포함됩니까?

그렇다면 SHR에서 VIRT를 빼서 RAM에서 오는 메모리 양을 알아야합니까? 이 메모리 사용량이 선형 적으로 증가한다면 20 인스턴스는 4.7Gb + (0.3Gb) * 20 = 10.7Gb의 RAM을 사용합니까?

+1

VIRT, RES, SHR 및 기타 모든 프로세스 메트릭을 무시하십시오. 전역 사용 메모리 값 (맨 윗줄)을보십시오. 하나의 인스턴스를 실행하고 값을 확인하십시오. 두 개의 인스턴스를 실행하고 값을 확인하십시오. 반복의 또 다른 커플을 위해 계속하십시오. 그래프를 플롯합니다. 외삽. –

답변

0

/proc/pid/smaps를 검사하고 싶습니다. 2 개의 인스턴스를 실행 한 다음 Private_ * 필드를 찾습니다.