본문 바로가기
배우는 것들/python

[ERROR] volatile gpu utils 0, GPU 병목

by Ho.virus 2024. 3. 4.

그제 실행했을땐 잘 되던 GPU연산이, volatile gpu utils 0으로 표시되며 수행 속도가 대폭 감소했다. (해결한 시점에서 쓰는 글이라 0인 케이스는 없는 점 양해)

데이터를 불러오는 장소가 HDD였기 때문에 Disk io 성능으로 인한 병목문제를 강력하게 의심했는데, top 명령어를 통해 cpu 사용량을 보니 disk wait에서는 문제가 없는 것으로 보였다(6% 정도).

그 다음은 오늘이 개강날이라 disk로 mount되는 곳으로의 전송 속도가 크게 줄었나 의심했지만, 해당 ip로 ping을 보내보니 속도는 정상이었다.

최종적으로 원인은 class 객체를 pickle로 저장하도록 바꾼게 문제였다.

원래는 numpy array를 pickle로 저장했었는데, 더 많은 정보가 저장되길 원해서 class를 생짜로 pickle로 저장하도록 했더니 저장에 대한 이에 대해서 속도가 느려진 모양.. 정확히는 모르겠지만 disk output에 대한 연산속도 증가는 top의 wait에 잡히지 않는 것 같다.

아니면 전체 CPU 코어(80)에 비하면 이미 wait가 높은 수준이었던 걸 수도... 아마 이게 맞지 않나 싶다.

중요한 정보만 따로 빼서 npy로 저장하니 속도가 아주 빨라졌다.

굿

 

-------------수정 -------------

disk out 속도가 느려진 이유는 객체가 변경되서가 아니라 그냥 해당 객체의 용량 자체가 엄청 컸기 때문...

지금보니 24GB였다. 하긴 pickle 바이너리로 저장하는게 class인게 뭐가 중요하겠냐마는

바이너리(bool)type이었기 때문에 np.packbits 메서드를 사용해 용량을 200메가정도로 압축해서 저장하니 그나마 빨라졌다.

하지만 이래도 기존보다 1.5배가량 속도가 느리다...

'배우는 것들 > python' 카테고리의 다른 글

백준 16929- Two Dots  (0) 2022.08.05
백준 11724번 - 연결요소의 갯수  (0) 2022.07.26
백준 1260- DFS와 BFS  (0) 2022.07.25
백준 1463 - 1로 만들기  (0) 2022.07.06
백준 11057번 - 오르막수  (0) 2022.06.20