프로세스가 'Killed' 메시지와 함께 종료되는 문제 해결 방법

2025. 5. 2. 20:53·Velog 이사(조회수 높았던 글 위주로..)
python -m scripts.inference --inference_config configs/inference/test.yaml 


add ffmpeg to path
Loads checkpoint by local backend from path: ./models/dwpose/dw-ll_ucoco_384.pth
Killed

프로세스가 'Killed' 메시지와 함께 종료되는 문제 해결 방법

딥러닝 모델을 실행하거나 대규모 데이터를 처리하는 과정에서 간혹 "Killed"라는 메시지가 출력되면서 프로세스가 갑자기 종료되는 경험을 할 수 있다.

문제의 원인

"Killed" 메시지는 시스템에서 프로세스를 강제로 종료했음을 의미한다. 이 문제는 주로 다음과 같은 이유로 발생할 수 있다:

  1. 메모리 부족 (Out of Memory - OOM)
    • 가장 흔한 원인이다. 프로세스가 사용하는 메모리가 시스템의 물리적 메모리(RAM)를 초과할 때 발생합니다. 딥러닝 모델을 로딩하거나 대규모 데이터를 처리할 때 자주 발생하는 문제이다. 필자는 이문제로 메시지가 출력되었다.
  2. CPU 또는 GPU 자원 부족
    • 프로세스가 과도하게 CPU나 GPU 자원을 사용하는 경우에도 문제가 발생할 수 있다. 다만, 이 경우도 메모리 부족 문제와 함께 발생하는 경우가 많다.
  3. 시스템 리소스 제한
    • 운영 체제나 Docker 컨테이너, 가상머신에서 설정된 리소스 제한을 초과했을 때도 발생할 수 있다.
  4. 프로세스 간 충돌
    • 여러 개의 프로세스가 동시에 많은 리소스를 사용하려고 할 때 시스템이 불안정해져 프로세스가 강제 종료될 수 있다.

해결 방법

이 문제를 해결하기 위해 몇 가지 방법을 시도할 수 있다:

1. 메모리 사용량 모니터링

먼저, 실행 중인 프로세스가 얼마나 많은 메모리를 사용하고 있는지 모니터링하는 것이 중요하다. 리눅스에서는 htop, top 또는 free -m 명령어를 사용하여 현재 메모리 사용량을 확인할 수 있다.

htop  # 또는 top
free -m  # 메모리 상태 확인

2. 스왑 메모리 확인 및 증가

스왑 메모리가 부족한 경우, 스왑 메모리를 늘려서 메모리 부족 문제를 완화할 수 있다. 스왑 메모리를 설정하는 방법은 다음과 같다:

sudo fallocate -l 4G /swapfile  # 4GB 스왑 파일 생성
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

이렇게 하면 시스템이 물리적 메모리가 부족할 때 스왑 메모리를 사용하여 프로세스가 계속 실행되도록 도울 수 있다.

3. 모델 크기 줄이기

사용하는 모델의 크기를 줄이거나, 더 작은 모델을 사용하는 것도 좋은 방법입니다. 특히 메모리 사용량이 큰 모델의 경우, 더 작은 모델을 선택하거나 필요한 부분만 로드하는 전략을 사용할 수 있다.

4. 배치 크기 줄이기

모델 추론 과정에서 배치 크기를 줄이면 메모리 사용량을 크게 줄일 수 있다. 이는 특히 GPU 메모리가 부족한 경우 유용하다.

5. 프로세스 재시작

불필요한 백그라운드 프로세스를 종료하고, 문제가 되는 프로세스를 재시작해 보자. 때로는 단순히 리소스를 확보하는 것만으로도 문제가 해결될 수 있다.

6. 시스템 리소스 추가

가능하다면, 더 많은 메모리나 CPU/GPU 리소스가 있는 머신에서 작업을 실행하는 것도 방법이다. 클라우드 환경에서는 더 큰 인스턴스를 선택하거나, 로컬 환경에서는 메모리 업그레이드를 고려할 수 있다.

결론

프로세스가 "Killed" 메시지와 함께 종료되는 문제는 주로 메모리 부족으로 인해 발생한다. 위에서 제시한 방법들을 통해 메모리 사용량을 줄이거나, 시스템 리소스를 추가하여 문제를 해결할 수 있다. 메모리 사용량을 모니터링하면서 단계적으로 접근하는 것이 좋다.

결국 필자는 해결하지 못했지만 다른분들은 해결하시길 바랍니다..


[2024년 8월 14일 작성글]

저작자표시 비영리 변경금지 (새창열림)

'Velog 이사(조회수 높았던 글 위주로..)' 카테고리의 다른 글

conda-forge는 무엇일까? (Miniconda 설치후..)  (0) 2025.05.02
Install Python 3.11.7, cuda 11.7 in Miniconda  (0) 2025.05.02
Installing Ubuntu 20.04 in Jetson nano  (0) 2025.05.02
Jetson Nano에 ROS2 Foxy 설치하기  (0) 2025.05.02
ROS2 Foxy를 선택하는 이유와 ROS2 버전별 특징 비교  (0) 2025.05.02
'Velog 이사(조회수 높았던 글 위주로..)' 카테고리의 다른 글
  • conda-forge는 무엇일까? (Miniconda 설치후..)
  • Install Python 3.11.7, cuda 11.7 in Miniconda
  • Installing Ubuntu 20.04 in Jetson nano
  • Jetson Nano에 ROS2 Foxy 설치하기
seukseok
seukseok
전자기기 좋아합니다.
  • seukseok
    seukseok의 개발 일지
    seukseok
  • 전체
    오늘
    어제
    • 분류 전체보기 (54)
      • OS 개발 (15)
      • 개발보드 (4)
      • Velog 이사(조회수 높았던 글 위주로..) (15)
      • Issue (5)
      • 개발자 정보 (12)
      • test (0)
      • 하드웨어 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Too Polished ≠ Helpful
  • 인기 글

  • 태그

    커널개발
    로컬 llm
    리눅스
    로컬 AI
    llama3
    커널 개발
    C언어
    ai pc
    오픈소스 ai
    개발환경
    python
    홈서버
    설치 가이드
    RISC-V
    개발보드
    NVIDIA Jetson
    os튜토리얼
    QEmu
    OS개발
    ubuntu
    시스템 프로그래밍
    멀티모달 ai
    Linux
    ROS2 Foxy
    SBC
    개인 서버
    리눅스 오류
    OS 개발
    SSH
    로봇 개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
seukseok
프로세스가 'Killed' 메시지와 함께 종료되는 문제 해결 방법
상단으로

티스토리툴바