OS/Linux

[ 명령어 분석 ] top

ping핑이 2024. 4. 19. 13:37
반응형

현재 인턴십중인 회사에서 받은 과제로 모니터링에 사용되는 top 명령어의 필드, 항목을 자세히 분석해보도록 하자

멘토분께서는 top의 항목을 잘 모르는 엔지니어가 많다고 하셨다.

 

목차

  1. top 명령어란?
  2. 항목별 의미
  3. 나의생각

 

1. top(table of process) 명령어란?

실시간으로 리눅스 프로세스를 보여주는 명령어

리눅스커널에 의해 관리되는 프로세스나 쓰레드의 리스트나 시스템정보를 보여준다.

 

2. 항목 별 의미

이제 top 명령어의 각 항목 별 의미를 알아보자

top 첫번째 라인

top – 현재시간 | 서버가동시간 | 유저 세션 수 | cpu 로드 에버리지(1, 5, 15)

 

top 두번째 라인

 

테스크의 수 | 가동중인 테스크 | sleep 중인 테스크 | 중지된 테스크 | 좀비프로세스

 

top 세번째 라인

  • us : 유저영역에서 사용되는 CPU 비율
  • sy : 시스템영역에서 사용되는 CPU 비율
  • ni : 프로세스 우선순위 설정에 사용되는 CPU 비율 (기본값, 그보다 낮은 우선순위로 유저영역에서 실행)
  • id : 사용하지 않는 CPU 비율
  • wa : I/O 대기 상태의 CPU 비율
    • CPU가 I/O를 기다리는 비율인데 이 값이 1/(cpucore count) * 100 을 넘어간다면 병목을 의심할 수 있다
  • hi : 하드웨어 인터럽트에 사용한 CPU 비율
  • si : softirq를 처리하는데 사용한 CPU 비율
  • st : Hypervisor VM 에서 사용하여 대기하는 CPU 비율

유저영역에서 사용되는 CPU 비율 = us + ni

시스템영역에서 사용되는 CPU 비율 = sy + hi + si

top 필드

  • PID : Process ID
  • USER : 프로세스의 소유권을 가진 사용자
  • PR : 우선 순위 값
  • NI : nice 값 (-20 ~ 19)
  • VIRT : 가상메모리 할당 크기(KiB)
  • RES :  실제 물리 메모리 할당 크기(KiB)
  • SHR : 공유하고 있는 실제 물리 메모리 크기(KiB)
  • S : 프로세스의 상태
    • R : Running
    • S : Sleeping
    • I : Idle
    • D : Uninterruptable Sleep
    • T : 작업 제어 신호에 의해 중지됨
    • t : Trace 중 디버거에 의해 중지됨
    • Z : Zombie
  • %CPU : 프로세스가 사용하고 있는 CPU 비율
  • %MEM : 프로세스가 사용하고 있는 메모리 비율
  • TIME+ : Total CPU TIME ( 소숫점 둘째자리 까지 )
  • COMMAND : TASK를 시작하게 한 명령어

f 옵션을 통해 더 많은 항목을 추가 할 수 있다.

 

3. 나의 생각

나는 top 명령어가 프로세스가 cpu나 메모리를 얼마나 사용하는지 확인 할 수 있는 도구로만 알고 있었는데 직접 각 항목이 무엇을 의미하는지 하나하나 캐보니 많은 정보를 보여주고 있다는 것을 느꼈다.

 

항목을 분석하면서 모르는 부분을 더 찾아봐야겠다.

 

특히 %Cpus 부분에 hi,si,st 가 잘 이해가 안됐었는데 인터럽트 부분을 좀 더 공부 해봐야겠다. 

 

공부할것 : 병목현상, DB구조, 인터럽트 핸들링.

 

그리고 실무에서 top가 어떻게 사용되는지 실제사례를 한번 알아 봐야겠다.(자주 사용되는 필드)

반응형