[Bash] Process 실행 후에 시간이 지난 후 진행이 안될 때
2023. 3. 7. 10:22ㆍDevelopers 공간 [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
728x90
반응형
'Developers 공간 [Shorts] > Software Basic' 카테고리의 다른 글
[Git] Git Pull 시 need to specify how to reconcile them (0) | 2023.03.19 |
---|---|
[Python] 간단한 프로그램 Multiprocessing 만들기 (0) | 2023.03.07 |
[CMake] 기초 템플릿 (0) | 2023.03.01 |
[ShellScript] 기초 템플릿 (0) | 2023.02.28 |
[Terminology] WebApp, HybridApp, Responsive App, Platform, Framework... (0) | 2023.02.26 |