본문 바로가기

OS/Linux

Linux - /proc/[PID]/status 파일 정보

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
반응형