You cannot see this page without javascript.

진주성 블로그 방문하기

top을 통해 살펴보는 프로세스 정보들

top

  • 시스템의 상태를 전반적으로 가장 빠르게 파악 가능(CPU, Memory, Process)
  • 옵션 없이 입력하면 interval 간격(기본 3초)으로 화면을 갱신하며 정보를 보여줌
  •  

  • top 실행 전 옵션
    • 순간의 정보를 확인하려면 -b 옵션 추가(batch 모드)
    • -n : top 실행 주기 설정(반복 횟수)
  •  
  • 세부 정보 필드별 항목
      PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEM  TIME+  COMMAND
     
        * PID : 프로세스 ID (PID)
        * USER : 프로세스를 실행시킨 사용자 ID
        * PRI : 프로세스의 우선순위 (priority)
        * NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
        * VIRT : 가상 메모리의 사용량(SWAP+RES)
        * RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
        * SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
        * S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]
        * %CPU : 프로세스가 사용하는 CPU의 사용율
        * %MEM : 프로세스가 사용하는 메모리의 사용율
        * TIME+ : 프로세스 시작된 이후 경과된 총 시간
        * COMMAND : 실행된 명령어
        
        * Load average (로드 애버리지) : 세 개의 숫자는 각각 1분, 5분, 15분 간의 평균 실행/대기 중인 프로세스의 수를 나타냄.
          uptime 명령어로도 확인할 수 있으며, 시스템 부하를 모니터링 할 수 있다. 숫자가 높을 수록 시스템에 부하가 있다는 것이다.
          load average 값은 CPU의 코어 수를 같이 확인해야 하며, 코어 수 보다 적으면 문제가 없다.
  •  
  • top 실행 후 명령어
    • shift + p : CPU 사용률 내림차순
    • shit + m : 메모리 사용률 내림차순
    • shift + t : 프로세스가 돌아가고 있는 시간 순

    • f : sort field 선택 화면 -> q 누르면 RES순으로 정렬
    • a : 메모리 사용량에 따라 정렬
    • b : Batch 모드로 작동
    • 1 : CPU Core별로 사용량 보여줌
    • k : Process 종료
    • k 입력 후 종료할 PID를 입력한다
          signal을 입력하라 표시되면 9를 넣어준다
    • c : 명령 인자 표시 / 비표시
    • l(소 문자엘) : uptime line(첫번째 행)을 표시 / 비표시
    •  space bar : Refresh
    • u : 입력한 유저 소유의 Process만 표시
    • o which user : 와 같이 유저를 입력하라 표시될때 User를 입력
    • o blank(공백) 입력시 모두 표시
    • shift + b : 상단의 uptime 및 기타 정보값을 블락선택해 표시
    • i : idle 또는 좀비 상태의 프로세스는 표시 되지 않음
    • z : 출력 색상 변경
    • d [sec] : 설정된 초단위로 Refresh
    • c : command뒤에 인자값 표시
    • q : 명령어 종료
    •  
  • ps와 top의 차이점
    • ps는 ps한 시점에 proc에서 검색한 cpu 사용량

    • top은 proc에서 일정 주기로 합산해 cpu 사용율 출력
  • top -b -n 1
  • 3:58 : 3시간 58분 전에 서버가 구동

  • load average : 현재 시스템이 얼마나 일을 하는지를 나타냄. 3개의 숫자는 1분, 5분, 15분 간의 평균 실행/대기 중인 프로세스의 수. CPU 코어수 보다 적으면 문제 없음

  • Tasks : 프로세스 개수

  • KiB Mem, Swap : 각 메모리의 사용량
  • PR : 실행 우선순위
  • VIRT, RES, SHR : 메모리 사용량 => 누수 check 가능
  • S : 프로세스 상태(작업중, I/O 대기, 유휴 상태 등)

 

VIRT, RES, SHR

  • 현재 프로세스가 사용하고 있는 메모리
  • VIRT
    • 프로세스가 사용하고 있는 virtual memory의 전체 용량
    • 프로세스에 할당된 가상 메모리 전체
    • SWAP + RES
  • RES
    • 현재 프로세스가 사용하고 있는 물리 메모리의 양
    • 실제로 메모리에 올려서 사용하고 있는 물리 메모리
    • 실제로 메모리를 쓰고 있는 RES가 핵심!
  • SHR
    • 다른 프로세스와 공유하고 있는 shared memory의 양
    • 예시로 라이브러리를 들 수 있음. 대부분의 리눅스 프로세스는 glibc라는 라이브러리를 참고하기에 이런 라이브러리를 공유 메모리에 올려서 사용

 

 

Memory Commit

  • 프로세스가 커널에게 필요한 메모리를 요청하면 커널은 프로세스에 메모리 영역을 주고 실제로 할당은 하지 않지만 해당 영역을 프로세스에게 주었다는 것을 저장해둠
  • 이런 과정을 Memory commit이라 부름
  • 왜 커널은 프로세스의 메모리 요청에 따라 즉시 할당하지 않고 Memory Commit과 같은 기술을 사용해 요청을 지연시킬까?
    • fork()와 같은 새로운 프로세스를 만들기 위한 콜을 처리해야 하기 때문
    • fork() 시스템 콜을 사용하면 커널은 실행중인 프로세스와 똑같은 프로세스를 하나 더 만들고, exec() 시스템 콜을 통해 다른 프로세스로 변함. 이 때 확보한 메모리가 쓸모 없어질 수 있음
    • COW(Copy-On-Write) 기법을 통해 복사된 메모리 영역에 실제 쓰기 작업이 발생한 후 실질적인 메모리 할당을 진행

 

 

프로세스 상태

  • SHR 옆에 있는 S 항목으로 볼 수 있음
    • D : Uninterruptiable sleep. 디스크 혹은 네트워크 I/O를 대기
    • R : 실행 중(CPU 자원을 소모)

    • S : Sleeping 상태, 요청한 리소스를 즉시 사용 가능
    • T : Traced or Stopped. 보통의 시스템에서 자주 볼 수 없는 상태
    • Z : zombie. 부모 프로세스가 죽은 자식 프로세스

 

 
 
운영 중 실시간 CPU 사용률 측정하는 방법
    * top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.f%n", prefix, 100 - v }'
번호 제목 날짜 조회 수
170 Restore Database And Rename Database Files Example 2019.03.26 61722
169 Dns 보안 file 2017.08.23 20211
168 Sun t2000 manual file 2017.08.24 19928
167 AD(Active Directory) 2017.11.01 18594
166 한글 putty file 2017.09.13 11999
165 Tear Drop / Tiny Fragment / Fragment Overlap(고전적인방법) file 2017.10.17 8969
164 Cain & Abel is a password recovery tool 2018.03.12 8068
163 win-sshfs for windows file 2017.09.13 7770
162 룰 기반의 IDS(침입탐지시스템) - snort file 2017.09.27 7675
161 HP-UX snmp 중지 설정 2017.09.07 6859
160 VPN 2017.11.01 5139
159 보안관제 file 2017.11.01 4767
158 아파치 2.2.29 버젼에서 SSLProtocol 중 TLSv1.2로 설정 2019.02.27 4422
157 tcpdump - dump traffic on a network [1] file 2017.10.13 4028
156 윈도우용 wget file 2017.09.28 4017
진주성 블로그 방문하기
CLOSE