학습을 돌리다가 뭔가 잘못된거 같아서 Ctrl+c로 강제 종료를 할 경우에 웬만해서는 할당해제가 잘 되지만 가끔씩 할당해제가 안될 때가 있다.
+ 추가적으로 multi-process 할 때 Ctrl+C할 떄도 메모리 할당해제 안됨
( 해결하면서 nvidia-smi 캡쳐 안해서 적당히 긁어옴 )

이 때
kill -p <PID>
로 프로세스를 죽여도.

이렇게 남아있는 경우가 있다. 이 경우 child process가 제대로 죽지 않은 경우이다.
ps -aux
를 해보면 process가 남아있는 것을 볼 수 있다.
kbh 544243 0.0 2.2 45244392 2979884 pts/4 T 13:14 0:02 python src/trainer.py -c config/dv2_v0.yaml -v dv2_v0 -d cuda:1
kbh 544307 0.0 2.2 45234368 2969784 pts/4 T 13:14 0:02 python src/trainer.py -c config/dv2_v0.yaml -v dv2_v0 -d cuda:1
kbh 544371 0.0 2.2 45230472 2966104 pts/4 T 13:14 0:02 python src/trainer.py -c config/dv2_v0.yaml -v dv2_v0 -d cuda:1
kbh 544435 0.0 2.2 45268524 3003896 pts/4 T 13:14 0:02 python src/trainer.py -c config/dv2_v0.yaml -v dv2_v0 -d cuda:1
kbh 544499 0.0 2.2 45260504 2995912 pts/4 T 13:14 0:02 python src/trainer.py -c config/dv2_v0.yaml -v dv2_v0 -d cuda:1
이럭식으로 엄청 많이 나오는데, 학습을 돌릴때 gpu 장치를 명시하기 때문에
"cuda:1" 이 들어있는 프로세스를 죽이는
#!/bin/bash
list="$(ps -aux)"
while read -r p; do
if grep -q "cuda:1" <<< $p; then
a=${p[0]}
idx=0
for i in $a; do
if [ $idx -eq 1 ]
then
sudo kill -9 $i
fi
idx=$(($idx+1))
done
fi
done <<<"$list"
스크립트를 돌리니까 할당해제가 되었다.
https://gist.github.com/kooBH/49f27f69a8fa4fd9d9136945095bfb4c
'가끔 써서 기억 안나는 내용' 카테고리의 다른 글
MATLAB 서버에서 돌리기 (0) | 2023.01.10 |
---|---|
Windows에서 엥간한 pip install 문제의 답 (0) | 2022.09.08 |
가끔 써서 기억 안나는 LaTex (0) | 2020.12.21 |
CMakeLists.txt 기본 양식 (0) | 2020.07.13 |
syntaxhighlighter html (0) | 2019.12.15 |