Skip to main content
QUICK REVIEW

[논문 리뷰] Effectiveness of Garbage Collection in MIT/GNU Scheme

Amey Karkare, Amitabha Sanyal|ArXiv.org|2006. 11. 20.
Parallel Computing and Optimization Techniques참고 문헌 8인용 수 7
한 줄 요약

이 논문은 MIT/GNU Scheme에서 가비지 컬렉션의 효율성을 측정하기 위해 사라진 객체가 더 이상 사용되지 않은 후에도 메모리에서 가시 상태로 유지되는 기간인 드래그 타임(drag time)을 분석한다. 높은 빈도의 가비지 컬렉션을 통해 가시성 지연(δ_rch)을 분리하고, 이로 인해 사라진 객체 중 최대 26%가 여전히 메모리에 존재하며, 드래그 타임이 총 실행 시간의 37%에 이르는 것으로 나타났다. 이는 더 이른 시점에 도달 불가능 상태로 표시함으로써 메모리 절약 가능성이 9%에서 65%에 이르는 것으로 나타났다.

ABSTRACT

Scheme uses garbage collection for heap memory management. Ideally, garbage collectors should be able to reclaim all dead objects, i.e. objects that will not be used in future. However, garbage collectors collect only those dead objects that are not reachable from any program variable. Dead objects that are reachable from program variables are not reclaimed. In this paper we describe our experiments to measure the effectiveness of garbage collection in MIT/GNU Scheme. We compute the drag time of objects, i.e. the time for which an object remains in heap memory after its last use. The number of dead objects and the drag time together indicate opportunities for improving garbage collection. Our experiments reveal that up to 26% of dead objects remain in memory. The average drag time is up to 37% of execution time. Overall, we observe memory saving potential ranging from 9% to 65%.

연구 동기 및 목표

  • 사라진 객체의 드래그 타임을 분석함으로써 MIT/GNU Scheme에서 가비지 컬렉션의 효율성을 측정하는 것.
  • 프로그램 구조로 인해 사용되지 않음에도 불구하고 여전히 가시 상태로 유지되는 사라진 객체의 비율을 특정하는 것.
  • 더 이른 도달 불가능 표시를 통해 드래그 타임을 줄임으로써 얻을 수 있는 메모리 절약 잠재력을 정량화하는 것.
  • 함수형 언어인 스킴과 같은 환경에서 자동 기법이 도달 가능한 사라진 객체를 줄일 수 있는지 평가하는 것.

제안 방법

  • 가시성 지연(δ_rch)이 주요 드래그 타임 성분이 되도록 하기 위해, 고주기 가비지 컬렉션을 강제로 수행하여 δ_gc를 최소화함.
  • 객체 생성, 마지막 사용 시점, 가시성 상태를 로그 기록하기 위해 벤치마크 프로그램을 인스트루멘터링함.
  • 객체가 마지막으로 사용된 시점에서 도달 불가능 상태가 되는 시점 사이의 간격을 드래그 타임으로 측정함.
  • 메모리 절약 잠재력을 추정하기 위해 도달 가능한/활성 객체 곡선의 면적(공간-시간 곱)을 계산함.
  • 실행 시간 비율에 따른 사라진 객체 분포를 시각화하기 위해 로그 스케일 히스토GRAM을 사용함.
  • 일반화를 위해 여섯 가지 벤치마크(silex, lalr, eopl, prolog, sudoku, cipher)를 분석함.

실험 결과

연구 질문

  • RQ1MIT/GNU Scheme에서 프로그램 구조로 인해 얼마나 많은 비활성 객체가 여전히 가시 상태로 유지되는가?
  • RQ2비활성 객체가 평균적으로 얼마나 오랫동안 메모리에 머물며, 총 실행 시간의 몇 퍼센트인지?
  • RQ3도달 가능한 비활성 객체를 제거함으로써 얻을 수 있는 최대 메모리 절약 잠재력은 얼마인가?
  • RQ4다양한 스킴 프로그램 간에 드래그 타임 분포는 어떻게 달라지는가?

주요 결과

  • 프로그램 변수로부터 지속적인 가시성으로 인해 최대 26%의 비활성 객체가 여전히 메모리에 존재함.
  • silex 벤치마크에서 최대 드래그 타임이 총 런타임의 96.99%에 이르며, 객체 유지 기간이 거의 전체 실행 시간에 가까운 것으로 나타남.
  • silex의 평균 드래그 타임은 런타임의 28.36%, lalr는 37.49%, eopl은 4.95%로 프로그램 간에 상당한 차이가 있음.
  • 공간-시간 곱을 기반으로 한 메모리 절약 잠재력은 sudoku의 경우 9.18%에서 silex의 경우 65.48%에 이르며, 다양하게 변동함.
  • 대부분의 비활성 객체는 런타임의 0–50% 범위 내에서 드래그 타임을 가지지만, silex, eopl, sudoku는 95% 이상의 드래그 타임을 가지는 비율이 뚜렷이 높음.
  • eopl 벤치마크에서는 비활성 객체의 99.59%가 런타임의 약 100%에 가까운 드래그 타임을 가지며, 객체 수명 주기 관리의 높은 비효율성을 보여줌.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.