DOI QR코드

DOI QR Code

GC-Tune을 이용한 Haskell 병렬 프로그램의 성능 조정

Tuning the Performance of Haskell Parallel Programs Using GC-Tune

  • 김화목 (부산대학교 전기전자컴퓨터공학과) ;
  • 안형준 (부산대학교 전기전자컴퓨터공학과) ;
  • 변석우 (경성대학교 컴퓨터공학과) ;
  • 우균 (부산대학교 전기전자컴퓨터공학과)
  • 투고 : 2017.03.06
  • 심사 : 2017.05.31
  • 발행 : 2017.08.15

초록

매니코어 기술에 힘입어 컴퓨터 하드웨어의 성능이 향상되고 있지만 그에 비례한 소프트웨어 성능 증가는 다소 미미한 실정이다. 함수형 언어는 병렬 프로그램의 성능을 향상시키는 대안 중 하나이다. 이러한 언어는 부수효과가 없는 순수한 수식을 통해 내재된 병렬성을 지원하기 때문이다. 함수형 언어인 Haskell은 모나드를 기반으로 하는 다양하고 쉬운 병렬 구조를 제공하기 때문에 병렬 프로그래밍에서 널리 사용된다. 하지만 Haskell로 작성된 병렬 프로그램의 성능 확장성은 코어 수가 증가함에 따라 변동이 큰 경향이 있다. 이는 프로그램 실행에 있어 가비지 컬렉션이 공간과 시간에 모두 영향을 미치는데 Haskell은 이러한 가비지 컬렉션을 사용하는 가상머신 위에서 실행되기 때문이라고 추정된다. 따라서 본 논문에서는 GC-Tune이라는 메모리 튜닝 도구를 사용하여 이 추정이 맞는지 검증하고 Haskell 병렬 프로그램의 성능 확장성을 높이는 방법을 모색한다. 병렬 Haskell 표절 검사 프로그램을 대상으로 실험한 결과 성능 확장성이 향상되었다. 특히 메모리 튜닝을 하지 않은 프로그램에 비해 속도 향상의 변동 범위가 39% 감소하였다.

Although the performance of computer hardware is increasing due to the development of manycore technologies, software lacking a proportional increase in throughput. Functional languages can be a viable alternative to improve the performance of parallel programs since such languages have an inherent parallelism in evaluating pure expressions without side-effects. Specifically, Haskell is notably popular for parallel programming because it provides easy-to-use parallel constructs based on monads. However, the scalability of parallel programs in Haskell tends to fluctuate as the number of cores increases, and the garbage collector is suspected to be the source of this fluctuations because it affects both the space and the time needed to execute the programs. This paper uses the tuning tool, GC-Tune, to improve the scalability of the performance. Our experiment was conducted with a parallel plagiarism detection program, and the scalability improved. Specifically, the fluctuation range of the speedup was narrowed down by 39% compared to the original execution of the program without any tuning.

키워드

과제정보

연구 과제번호 : 매니코어 기반 초고성능 스케일러블 OS 기초연구

연구 과제 주관 기관 : 정보통신기술진흥센터

참고문헌

  1. Y. Kim and S. Kim, "Technology and Trends of High Performance Processors," Electronics and Telecommunications Trends, No. 6, pp. 123-136, 2014.
  2. J. Kim, S. Byun, K. Kim, J. Jung, K. Koh, S. Cha, and S. Jung, "Technology Trends of Haskell Parallel Programming in the Manycore Era," Electronics and Telecommunications Trends, No. 29, pp. 167-175, 2014.
  3. N. Shavit, and D. Touitou, "Software transactional memory," Distributed Computing, pp. 99-116, 1997.
  4. J. Epstein, A. P. Black, and S. P. Jones, "Towards Haskell in the cloud," ACM SIGPLAN Notices, ACM, pp. 118-129, 2011.
  5. D. Stewart, GHC GC-Tunes, [Online]. Available: http//hackage.haskell.org/package/GHC GC-Tune.(downloaded 2017. Feb. 13)
  6. S. Marlow, S. P. Jones, and S. Singh, "Runtime support for multicore Haskell," ACM SIGPLAN Notices, ACM, 2009.
  7. G. Hutton, Programming in Haskell, Cambridge University Press, 2007.
  8. J. M. Stichnoth, G. Y. Lueh, and M. Cierniak, "Support for garbage collection at every instruction in a Java compiler," ACM SIGPLAN Notices, 1999.
  9. P. M. Sansom and S. L. Peyton Jones, "Generational garbage collection for Haskell," Proc. of the conference on Functional programming languages and computer architecture, pp. 106-116, 1993.
  10. D. M. Ungar and M. I. Wolczko, "Method and apparatus for generational garbage collection of a heap memory shared by multiple processors," U.S. Patent No. 6, 2001.
  11. S. Marlow, et al., “Parallel generational-copying garbage collection with a block-structured heap," Proc. of the 7th international symposium on Memory management, ACM, 2008.
  12. S. Marlow and S. P. Jones, "Multicore garbage collection with local heaps," ACM SIGPLAN Notices, 2011.
  13. Y. Kim, J. Cheon, S. Byun and G. Woo, "A Parallel Performance Comparison of Haskell Using a lagiarism Detection Method," KCC, pp. 1724-1726, 2016.
  14. J. Jeong, W. Gyun and H. Cho, "A source code linearization technique for detecting plagiarized programs," ACM SIGCSE Bulletin, pp. 73-77, 2007.