본문 바로가기
[GPUaaS]/GPUmgt

[GPU] 스크립트 사용 프로세스 확인 및 삭제 방법!!

by METAVERSE STORY 2026. 2. 19.
반응형

 

 

0번 GPU를 점유 중인 프로세스를 찾아 종료하는 과정은 nvidia-smi를 활용하면 간단합니다.
서비스에 영향이 가지 않도록 조심스럽게 진행해야 하므로 아래 단계를 따라주세요.


1. 0번 GPU 사용 프로세스 확인

먼저 어떤 프로세스(PID)가 GPU 0번을 잡고 있는지 확인합니다.

Bash
 
nvidia-smi -i 0

명령어 결과 하단의 Processes 섹션을 확인하세요.

  • GPU: 0 (우리가 타겟팅한 번호)
  • PID: 프로세스 아이디 (예: 12345)
  • Type: C (Compute) 또는 G (Graphic)
  • Process name: 실행 중인 프로그램 이름 (python, java, Xorg 등)

2. 프로세스 종료 방법 (Linux 기준)

확인한 PID를 이용해 프로세스를 종료합니다. 안전을 위해 두 단계를 거치는 것이 좋습니다.

단계 A: 부드러운 종료 (SIGTERM)

프로세스가 작업을 정리하고 스스로 닫히도록 유도합니다.

Bash
 
kill -15 [PID]
# 예: kill -15 12345

단계 B: 강제 종료 (SIGKILL)

위 명령어로도 프로세스가 죽지 않고 계속 GPU를 점유하고 있다면 강제로 종료합니다. (데이터 손실 주의)

Bash
 
kill -9 [PID]
# 예: kill -9 12345

3. 한 번에 모든 프로세스 정리하기 (고급)

만약 프로세스가 너무 많아서 하나씩 끄기 힘들다면, 특정 GPU(0번)를 사용하는 모든 프로세스를 한 번에 찾는 명령어를 쓸 수 있습니다.

Bash
 
# GPU 0번을 사용하는 PID 리스트 확인
fuser -v /dev/nvidia0

이후 확인된 PID들을 종료하면 됩니다.


⚠️ 주의사항

  • 권한 문제: 일반 계정으로 종료되지 않는다면 명령어 앞에 sudo를 붙여야 합니다.
  • Xorg/GDM: 만약 운영체제의 화면 출력(GUI)을 담당하는 프로세스가 0번에 물려있다면, 종료 시 화면이 깜빡이거나 로그아웃될 수 있습니다. 서버용(Headless) 환경이 아니라면 주의하세요.

 

=========================

 

아래 내용을 그대로 복사해서 Bastion 서버에서 진행해 보세요.


1. 스크립트 파일 생성 (gpu_clean.sh)

Bastion 서버의 터미널에서 아래 명령어를 입력하여 파일을 만듭니다.

Bash
 
vi gpu_clean.sh

그다음 i를 눌러 편집 모드로 들어간 뒤, 아래 내용을 붙여넣으세요. (IP 범위를 자동으로 생성하도록 수정했습니다.)

Bash
 
#!/bin/bash

# 10.90.10.11부터 10.90.10.43까지 순회
for i in {11..43}
do
    SERVER="10.90.10.$i"
    echo "------------------------------------------"
    echo "Cleaning up GPU processes on $SERVER..."
    
    # 1. 부드러운 종료 시도 (SIGTERM)
    ssh -o ConnectTimeout=5 $SERVER "sudo fuser -k -15 /dev/nvidia*" 2>/dev/null
    
    sleep 2
    
    # 2. 강제 종료 시도 (SIGKILL)
    ssh -o ConnectTimeout=5 $SERVER "sudo fuser -k -9 /dev/nvidia*" 2>/dev/null
    
    echo "Done for $SERVER"
done

echo "------------------------------------------"
echo "All servers processed."

붙여넣은 후 Esc를 누르고 :wq를 입력하여 저장하고 나옵니다.


2. 실행 권한 부여 및 실행

파일을 만들었으면 '실행 가능한 상태'로 바꿔줘야 합니다.

Bash
 
# 1. 실행 권한 부여
chmod +x gpu_clean.sh

# 2. 스크립트 실행
./gpu_clean.sh

3. 실행 전 체크리스트 (매우 중요)

  • SSH 키 복사: Bastion에서 각 서버로 접속할 때 비밀번호를 묻지 않아야 스크립트가 멈추지 않고 돌아갑니다. 만약 비밀번호를 묻는다면 ssh-copy-id 10.90.10.11 등으로 키를 먼저 배포해야 합니다.
  • Sudo 권한: 각 서버의 계정이 sudo를 실행할 때 비밀번호를 묻지 않도록(NOPASSWD) 설정되어 있어야 끊김 없이 진행됩니다.
  • XID 43 상태 서버: 앞서 말씀드렸듯, 하드웨어가 완전히 뻗어버린(XID 43) 서버는 fuser 명령조차 먹통이 될 수 있습니다. 스크립트 실행 후에도 nvidia-smi가 안 되는 서버는 따로 리부팅해야 합니다.

💡 팁: 특정 서버만 골라서 하고 싶다면?

만약 전체가 아니라 11번, 15번 서버만 하고 싶다면 스크립트의 for i in {11..43} 부분을 for i in 11 15로 수정해서 실행하시면 됩니다.

 

 

 

반응형

댓글