본문으로 건너뛰기
  1. Error/

[Solved] Nvidia Visual Profiler : GC Overhead

·
NVIDIA JAVA
목차

Environment
#

Arch : ppc64le(Power9)
OS : RHEL 7.6
CUDA : v10.1
GPU : Tesla V100-SXM2-16GB

Purpose
#

machine learning python코드를 돌려 GPU와 CPU간의 memcopy를 nvvp로 시각화 해보고자 함

Problem
#

파이썬 코드를 돌리면서 nvprof로 정보 수집 시작

$ nvprof --log-file /tmp/tensorlogs/nvprof/nvprof1.%p.txt --export-profile /tmp/tensorlogs/nvprof/nvprof1.%p.nvvp --print-gpu-trace --profile-child-processes python tf_cnn_benchmarks.py

파일 생성까지 정상적으로 이루어짐

image

Nvidia Visual Profiler를 오픈함과 동시에 생성했던 nvprof파일을 profiling

$ nvvp nvprof1.129182.nvvp

ERROR
#

로딩 중에 다음과 같은 에러가 발생

Exception in thread "LoadPdm" java.lang.OutOfMemoryError: GC overhead limit exceeded
...

Exception in thread "LoadPdm" java.lang.OutOfMemoryError: Java heap space
...

Solution
#

Caused by : Java OutOfMemoryError
#

출력된 오류 메세지와 같이 메모리가 초과되어 발생되는 에러.
메모리가 부족하여 Garbage Collection이 이루어졌으나 확보된 메모리가 전체 메모리의 2%에 불과할 경우에 발생함.

앞선 nvprof파일을 보면 수집시간이 굉장히 짧음에도 불구하고 크기가 굉장히 큰 것을 확인할 수 있음. (여담으로 1시간짜리는 2GB가 넘었음..)

[Nvidia Developer Blog]

위 링크에 따르면 NVVP에서 OOM이 발생하는 이유는 CUDA 툴킷 설치의 libnvvp / nvvp.ini 파일에 지정된 Java 최대 힙 크기 설정 때문임.
default로 힙 크기를 1GB로 제한하도록 Java VM을 구성하게됨.

How to solve?
#

힙크기떄문에 문제가 생기는 거니 힙크기를 늘려주면 된다!

  • 최소 힙 크기(-Xms)를 2GB로 늘리자
  • 최대 힙 크기(-Xmx)는 돌리고자 하는 파일의 5~6배정도 크기면 적당
  • 기본 32 비트 모드 대신 64 비트 모드로 실행하도록 Java에 지시 (힙 크기> 4GB를 원하는 경우에 필요함.) (-d64)
  • Java의 병렬 가비지 수집 시스템을 사용하면 지정된 입력 크기에 필요한 메모리 공간을 줄이고 메모리 오류를보다 효과적으로 잡아낼 수 있음. (-XX : + UseConcMarkSweepGC -XX : + CMSIncrementalMode)

결론 :

$ nvvp -vm -d64 -vmargs -Xms2g -Xmx22g -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode

이렇게 실행하자!

성공!@@@@@@@@!!!!

image

관련 글

CIFAR-10 이미지 분류를 위한 CNN을 구성해보자! (Keras)
ML CNN Keras
Overview # 이 문서에서는 CIFAR-10 dataset에 대한 이미지 분류를 Keras를 사용한 CNN(Convolution Neural Network)로 구현해보도록 하겠습니다.
Content Trust in Docker(1) : Docker Notary란?
Docker TUF Notary Security
Overview # 네트워크로 연결된 시스템 사이의 데이터 송수신에서 가장 중요하게 여기는 점은 **“신뢰”**입니다. 특히 인터넷과 같이 신뢰할 수 없는 매체를 통해 통신할 때는 데이터의 무결성과 게시자를 보장하는 것이 중요합니다.
SW Update를 안전하게! : TUF(The Update Framework)
Security Framework Key
Overview # 현재 IT세상에서는 문자 그대로 수천개의 소프트웨어 업데이트 시스템이 사용되고 있습니다.