저는 GHC로 컴파일 된 haskell 프로그램의 메모리 소비를 벤치마킹하고 있습니다. 이렇게하기 위해 다음 명령 줄 인수를 사용하여 프로그램을 실행합니다 : +RTS -t -RTS
. 다음은 출력 예입니다. <<ghc: 86319295256 bytes, 160722 GCs, 53963869/75978648 avg/max bytes residency (386 samples), 191M in use, 0.00 INIT (0.00 elapsed), 152.69 MUT (152.62 elapsed), 58.85 GC (58.82 elapsed) :ghc>>
. ghc 설명서에 따르면 다음과 같이 출력됩니다.GHC의 + RTS -t -RTS 옵션의 출력 이해
- 전체 실행 동안 프로그램에서 할당 한 총 바이트 수입니다.
- 수행 된 가비지 콜렉션의 총 수.
- 평균 및 최대 "거주 기간"은 실제 데이터 양 (바이트)입니다. 런타임은 메이저 GC 동안 실제 데이터 양을 결정할 수 있습니다. 따라서 샘플 수가 주요 GC 수에 해당하는 이유는 (대개 비교적 작기 때문입니다).
- RTS가 OS에서 할당 한 최대 메모리입니다.
- 런타임 시스템 (INIT)을 초기화하고 프로그램 자체 (MUT, 뮤 테이터) 및 가비지 수집 (GC)을 실행하는 동안 CPU 시간 및 경과 벽시계 시간. 내 예에 적용
, 그것은, 160,722 가비지 컬렉션을 수행하는 제 프로그램은 약 82,321 MiB 크기 (1024^2로 나눈 바이트)를 섞은 것을 의미 51MiB/72MiB 평균/최대 메모리 만남을 가지며, 가장 191M 메모리에 할당 RAM 등등 ...
지금 알고 싶습니다.»평균 및 최대 "레지던트"(실제 데이터의 양을 바이트 단위로 비교 한 것입니다)»RTS가 할당 한 피크 메모리 운영 체제«? 그리고 또한 : 대략 120M의 나머지 공간을 사용하는 것은 무엇입니까?
더 많은 정보를 얻으려면 here이 지적되었지만 명확하게 밝히지 않은 것은 알고 싶습니다. 또 다른 source (5.4.4 두 번째 항목)은 가비지 수집에 120M 메모리가 사용된다는 것을 암시합니다. 그러나 그것은 너무 모호합니다 - 나는 인용 가능한 정보원이 필요합니다.
제발, 내 질문에 좋은 출처로 증거로 답변 할 수있는 사람이 있습니까?
친절에 감사드립니다!
당신이 살고 무엇인지 설명 할 수 데이터 (그리고 아마도 또한 죽은 데이터«)입니까? 또한 정보를 백업하는 링크를 제공하고 GHC의 가비지 콜렉션이 어떻게 작동 하는지를 자세히 설명해 줄 수 있습니까? 매우 좋을거야. 종류는 안부한다! – user3389669
나는 GC에 대해 많이 모른다. 그래서 introductive literature는 훌륭 할 것이다. 언급 한 논문은 세부 사항으로 너무 많이 들어가서 제 시나리오를 해석하는 데 도움이되지 않습니다. 프레젠테이션은 이해하기 쉽지만 요점은 모르겠습니다. – user3389669