2011-09-23 6 views
2

나는 직업에 배정 할 '노동자'과정을 가지고있다. 이 유형의 수백 가지 프로세스를 생성하기 전에 해당 프로세스의 메모리 사용량 수치를 알고 싶습니다.메모리에서 Erlang 프로세스의 크기를 계산하는 방법은 무엇입니까?

나는 프로세스의 루프 데이터 (모든 튜플, 원자,리스트 등)와 실제 프로세스 메모리 풋 프린트에 저장된 모든 요소를 ​​합산해야한다는 것을 알고있다.

내가 이해하기에 앞서, {tuple | atom | list | process} 자체의 실제 크기를 알아야합니다.

프로세스의 메모리에 저장된 특정 데이터 구조가 주어지면 메모리의 전체 프로세스 크기를 어떻게 계산할 수 있습니까?

답변

10

erlang:process_info/2은 프로세스가 차지하는 메모리 양 (바이트)을 알려줍니다. 예를 들면 다음과 같습니다.

1> erlang:process_info(whereis(code_server), memory). 
{memory,284208} 

바이너리는 프로세스 힙에 있지 않기 때문에 포함되지 않습니다. 수동으로 크기를 계산해야합니다.

+0

은 [유용한 링크] (http://erlang.org/doc/efficiency_guide/processes.html)를 추가하여 프로세스 당 단어 수를 계산할 때 사용합니다 : Bytes div erlang : system_info (wordsize) .' – xealits

관련 문제