[Python / Linux] tcmalloc: large alloc 2219589632 bytes == 0x8fa7a000 @ 0x7fb7e4433680 해결법
Development/Python 2021. 10. 9. 02:06반응형
tcmalloc: large alloc 2219589632 bytes == 0x8fa7a000 @ 0x7fb7e4433680 류 Warning 해제하기
python에서 용량이 큰 파일을 다룰 때, 해당 경고 메시지가 발생하게 된다. 생긴게 굉장히 괴랄해서 Error가 뜬 것 처럼 보이지만, 사실 대용량 메모리 할당이 이루어졌을 때 이를 알리는 Warning 정도라고 보면 된다.
(물론 실제로 할당 메모리보다 자원이 부족할 경우에는 에러로 이어진다.)
증상은 아래와 같다.
tcmalloc: large alloc 2219589632 bytes == 0x8fa7a000 @ 0x7fb7e4433680 0x7fb7e4454824 0x7fb7e4454b8a 0x7fb7df36325e 0x7fb7df3649d2 0x7fb5b648a8ed 0x7fb75679e7be 0x7fb7563e48be 0x5f5db9 0x5f698e 0x50b4c7 0x570e46 0x56a0ba 0x5f6343 0x56bddd 0x56a0ba 0x5f6343 0x5f38f1 0x5f3bd5 0x486e08 0x5045db 0x56bf09 0x56a0ba 0x5f6343 0x5f56c7 0x56d5f6 0x56a0ba 0x5f6343 0x570e46 0x56a0ba 0x5f6343
tcmalloc: large alloc 2219589632 bytes == 0x113f3e000 @ 0x7fb7e4433680 0x7fb7e4454824 0x7fb7e4454b8a 0x7fb7df36325e 0x7fb7df3649d2 0x7fb5b648a8ed 0x7fb75679e7be 0x7fb7563e48be 0x5f5db9 0x5f698e 0x50b4c7 0x570e46 0x56a0ba 0x5f6343 0x56bddd 0x56a0ba 0x5f6343 0x5f38f1 0x5f3bd5 0x486e08 0x5045db 0x56bf09 0x56a0ba 0x5f6343 0x5f56c7 0x56d5f6 0x56a0ba 0x5f6343 0x570e46 0x56a0ba 0x5f6343
tcmalloc: large alloc 2997747712 bytes == 0x198402000 @ 0x7fb7e4433680 0x7fb7e4454824 0x7fb7e4454b8a 0x7fb7df36325e 0x7fb7df3649d2 0x7fb5b648a8ed 0x7fb75679e7be 0x7fb7563e48be 0x5f5db9 0x5f698e 0x50b4c7 0x570e46 0x56a0ba 0x5f6343 0x56bddd 0x56a0ba 0x5f6343 0x5f38f1 0x5f3bd5 0x486e08 0x5045db 0x56bf09 0x56a0ba 0x5f6343 0x5f56c7 0x56d5f6 0x56a0ba 0x5f6343 0x570e46 0x56a0ba 0x5f6343
대충 위와 같은 경고문이 파일을 다룰 때 마다 발생한다.
에러는 아니지만, 파이썬 로그를 덮어버리는 통에 불편함이 매우 크다.
경고를 해제하는 방법은 간단하다. 내부적으로 환경변수 $TCMALLOC_LARGE_ALLOC_REPORT_THRESHOLD을 사용하는데, large alloc 옆에 뜬 바이트 수보다 이를 더 크게 등록하면 된다.
필자의 경우 사용하는 머신러닝 서버의 RAM 메모리가 300기가를 넘는 TPU-VM이기 때문에,
과감히 10GB에 해당하는 THRESHOLD를 적용했다.
$ export TCMALLOC_LARGE_ALLOC_REPORT_THRESHOLD=107374182400
이후 해당 워닝이 발생하지 않는다!
반응형