[Bash] Process 실행 후에 시간이 지난 후 진행이 안될 때

2023. 3. 7. 10:22Developers 공간 [Shorts]/Software Basic

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

python으로 어떤 폴더 트리를 만드는 process 하나로 3일정도가 걸리는 작업을 진행했는데, 다음 명령어로 진행을 하고 몇일이 지나니, 더이상 진행이 안되고 있습니다...

python3 myfile.py

2. Why? (원인)

  • HTOP 결과 예시는 아래와 같습니다.
    • CPU 상태 : 파랑(low-priority), 녹색(normal), 빨강(kernel), 하늘(virtualize)
    • Mem : 초록(사용됨), 파랑(버퍼), 노랑(캐쉬)
    • Swp : 빨강(사용됨)
    • 상태 Bar
      • PID: 프로세스 식별자(ID)
      • USER: 프로세스의 소유자
      • PR: 프로세스의 우선 순위
      • NI: 우선순위에 영향을 주는 프로세스의 nice 값
      • VIRT: 프로세스가 사용 중인 가상 메모리 양
      • RES: 프로세스가 사용 중인 물리 RAM 의 양 (단위: kb)
      • SHR: 프로세스가 사용 중인 공유 메모리 양
      • S : 프로세스의 현재 상태 - R(running), S(sleeping), T(traced / stopped), Z(zombie), D(disk sleep)
      • CPU% : 프로세스가 프로세서를 사용한 시간의 백분률
      • MEM% : 프로세스가 사용 중인 물리 RAM의 백분률
      • TIME+: 프로세스가 Core를 사용한 시간
      • COMMAND: 프로세스 시작에 사용한 명령

  • PR과 NI는 둘다 값이 낮을 수록 우선순위가 높으며, 값을 낮추려면(우선순위 높이려면) root로만 가능합니다.
    • PR : 운영체제에서 참고하는 우선순위로, 조작이 안된다.
    • NI : 사용자 조작 우선순위. (-20 ~ 0[default]~ 19)
  • 결국 원인은 process들의 우선순위(NI)가 전부 같은데, 내가 프로세스를 실행한 이후에 많은 프로세스가 생겼고, scheduler에서 오래된 프로세스로 취급되어 순위가 밀려난 것입니다.

3. How? (해결책)

  • 방법1. 실행할 때부터 우선순위를 높여서 실행한다 (nice)
    ** 주의 :  nice, renice 모두 값을 낮추려면(우선순위 높이려면) root로만 가능합니다.
alias binary='python3 myfile.py'
nice -n -20 binary
  • 방법2. 중간에 우선순위를 높여줍니다. (renice)
    ** 주의 : renice에 들어가는 값은 "더하기" 입니다. 예를 들어 현재 NI가 1인데 아래 명령어를 실행하면 20을 뺀 -19가 됩니다.
renice -20 -p {PID}
renice -20 -u {USER}
더보기

-----------------------------------------------------------------------------------------------------

<아예 프로세스를 종료하는 방법>

kill -9 {PID} : 커널을 활용해 강제종료 (작업중이던 모든 데이터 소멸)
kill -15 {PID} : 정상적으로 안전하게 종료

-----------------------------------------------------------------------------------------------------


https://gafani.tistory.com/entry/htop-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

https://jhnyang.tistory.com/394

728x90
반응형