728x90
리눅스에서는 각 프로세스에 대한 정보를 /proc 디렉토리를 통해 확인할 수 있습니다. 이 디렉토리는 시스템이 동작하는 동안 생성되며, 각 프로세스에 대한 상태 정보를 제공하는 가상 파일 시스템입니다. /proc 아래에는 각 프로세스 ID(PID)를 이름으로 하는 디렉토리가 있으며, 그 아래 status라는 파일을 통해 해당 프로세스의 상세 정보를 확인할 수 있습니다.
/proc/[PID]/status 파일 개요
status 파일은 프로세스의 상태를 설명하는 정보가 있고 성능 모니터링, 문제 해결, 시스템 최적화를 위해 사용합니다.
주요 정보 필드
Name | 프로세스 이름 (예: sshd) |
Umask | 파일 생성 마스크 (권한 설정 시 기본 마스크 값) |
State | 프로세스의 현재 상태 (R: 실행 중, S: 대기 중, D: 디스크 대기, Z: 좀비 등) |
Tgid (Thread group ID) | 스레드 그룹 ID. 보통 메인 프로세스와 동일 |
Ngid | NUMA 스레드 그룹 ID. 대부분 0 |
Pid | 프로세스 ID (예: 11611) |
PPid (Parent Process ID) | 부모 프로세스의 ID (예: 949) |
TracerPid | 이 프로세스를 추적 중인 프로세스의 PID. 0이면 추적 중인 프로세스가 없음 |
Uid | 프로세스 소유자의 사용자 ID (실제, 유효, 저장된 UID 등) |
Gid | 프로세스 소유자의 그룹 ID |
FDSize | 프로세스가 열 수 있는 파일 디스크립터의 최대 개수 |
Groups | 프로세스가 속한 그룹의 ID 목록 |
VmPeak | 프로세스가 실행되는 동안 사용한 최대 가상 메모리 크기 (KB 단위) |
VmSize | 현재 가상 메모리 크기 (KB 단위) |
VmLck | 잠긴 메모리 크기 (시스템에서 스왑되지 않음) |
VmRSS | 현재 사용 중인 물리적 메모리 (RSS: Resident Set Size, KB 단위) |
Threads | 프로세스 내에서 실행 중인 스레드의 수 |
voluntary_ctxt_switches | 자발적으로 발생한 컨텍스트 전환 횟수 |
nonvoluntary_ctxt_switches | 강제로 발생한 컨텍스트 전환 횟수 |
상태 필드 (State)
프로세스의 상태는 시스템 성능과 관련된 중요한 정보를 제공합니다.
- R (Running): 프로세스가 실행 중입니다.
- S (Sleeping): 프로세스가 대기 중이며, 어떤 이벤트를 기다리고 있습니다.
- D (Disk sleep): 프로세스가 I/O 작업으로 인해 대기 상태에 있습니다.
- Z (Zombie): 프로세스가 종료되었지만, 부모 프로세스가 아직 해당 종료 정보를 수집하지 않았습니다.
- T (Stopped): 프로세스가 중단되었거나 디버거에 의해 일시 중지되었습니다.
프로세스 문제 해결 시 확인해야 할 항목
시스템에서 특정 프로세스에 문제가 발생했을 때, 이를 해결하기 위해 어떤 항목을 확인해야 하는지 살펴보겠습니다.
1. 프로세스 상태(State) 확인
- Z (Zombie) 상태인 프로세스가 너무 많으면 시스템 리소스가 부족해질 수 있습니다.
이 경우 부모 프로세스가 좀비 프로세스를 제대로 처리하고 있는지 확인해야 합니다.
2. 메모리 사용량(VmRSS, VmSize) 확인
- 프로세스의 메모리 사용량이 비정상적으로 높다면, VmRSS와 VmSize 항목을 통해 프로세스의 물리적 및 가상 메모리 사용량을 확인하고 메모리 문제를 파악해야 합니다.
3. 스레드 수(Threads) 확인
- 스레드 수가 급격히 증가한다면 이는 리소스 문제나 스레드 관리 이슈일 수 있습니다. 정상적인 범위를 벗어나는 경우, 스레드 관리 로직에 문제가 있는지 확인해야 합니다.
4. 시그널 상태(SigPnd, SigBlk, SigIgn) 확인
- 프로세스가 시그널을 받지 못하거나 무시하는 경우가 있을 수 있습니다. 시그널 관련 필드(SigPnd, SigBlk, SigIgn)를 통해 프로세스가 어떤 시그널을 대기하거나 무시하고 있는지 확인할 수 있습니다.
5. 컨텍스트 전환 횟수 (voluntary, nonvoluntary)
- 자발적(voluntary_ctxt_switches) 또는 비자발적(nonvoluntary_ctxt_switches) 컨텍스트 전환이 많다면, 해당 프로세스가 비효율적으로 CPU를 사용하고 있을 가능성이 있습니다.
728x90
반응형
'OS > Linux' 카테고리의 다른 글
Linux - 일반계정으로 1024이하 포트 사용방법 (setcap / getcap) (2) | 2024.10.03 |
---|---|
Linux - jq 명령어란? (JSON 데이터 처리기) (0) | 2024.10.03 |
Linux - Date 명령어로 타임스탬프 변환하기 (0) | 2024.10.02 |
Linux - 리눅스 주요 로그 파일 정리 (0) | 2024.09.30 |
Linux - nmap을 이용하여 포트스캐닝 방법 (0) | 2024.08.22 |