OS/ubuntu

우분투 하드웨어(cpu, 램) 사용량 확인 하기

삐뚤어진 개발자 2020. 8. 9.

우분투에서 기본적으로 프로세스 사용량 모니터링을 제공합니다. 별도의 설치가 필요없이, top 명령어로 모니터링 할수 있습니다.

 

아래의 명령어를 입력하면, 다음과 같이 모니터링 화면이 나와 어떤 프로그램이 얼마나 사용량을 차지하고 있는지 볼수 있습니다.

top

 

 

 

 

 

 

1. 서버 정보

모니터링 값의 맨위를 보시면 up 63 days, 11:27가 나옵니다.  63일 11시간 27분동안 서버가 계속 작동해왔다는 것을 의미 합니다.

다음 Load average (로드 애버리지) : 세 개의 숫자는 각각 1분, 5분, 15분 간의 평균 실행/대기 중인 프로세스의 수를 나타냅니다. 

메모리 

그 아래에 cpu 사용량과 KiB Mem/Swap 메모리 사용량도 표기되고 있습니다. 단위는 키로 바이트(KB)이고

메모리 사용률은 used 양을  total로 나눠준 값이 됩니다. 제 서버 기준으로는 758392/8091112 =약 9.4%의 사용량이 나옵니다.

그리고 swap 메모리는 메모리가 부족할 때, 사용되는 스왑 메모리입니다.

간단히 말해 가상 메모리 정도로 알아두시면 이해하기 편합니다.

 

2. 세부 정보 필드별 항목  

PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEM  TIME+  COMMAND

 

    * PID : 프로세스 ID (PID) - 우분투에서 프로세스 id를 나눠 관리합니다.

    * USER : 프로세스를 실행시킨 사용자 ID

    * PR : 프로세스의 우선순위 (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 : 실행된 명령어

    

  

 

2. top 실행 후 사용할 수 있는 옵션

    * shift + t : 실행된 시간이 큰 순서로 정렬

    * shift + m : 메모리 사용량이 큰 순서로 정렬

    * shift + p : cpu 사용량이 큰 순서로 정렬

    * k : Process 종료

       o k 입력 후 종료할 PID를 입력한다

       o signal을 입력하라 표시되면 9를 넣어준다

    * c  : 명령 인자 표시 / 비표시

    * l(소 문자엘)  : uptime line(첫번째 행)을 표시 / 비표시

    * space bar : Refresh

    * u : 입력한 유저 소유의 Process만 표시

       o which user : 와 같이 유저를 입력하라 표시될때 User를 입력

       o blank(공백) 입력시 모두 표시

    * shift + b : 상단의 uptime 및 기타 정보값을 블락선택해 표시

    * f  : 화면에 표시될 프로세스 관련 항목 설정

    * i : idle 또는 좀비 상태의 프로세스는 표시 되지 않음

    * z : 출력 색상 변경

    * d [sec] : 설정된 초단위로 Refresh

    * c  : command뒤에 인자값 표시

    * q : 명령어 종료

 

3. top 실행 전 옵션 : top의 정보들을 서식으로 출력하기 위한 옵션

     * -b : 배치모드 옵션 

     * -n : top 실행 주기를 설정

     * -p : process ID 

 

4. 운영 중 실시간 CPU 사용률 측정하는 방법

아래의 텍스트를 커널창에 입력해주면 아래의 그림처럼 현재 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 }'

5. ps 와 top의 차이점 

    * ps는 ps한 시점에 proc에서 검색한 cpu 사용량이다.

    * top은 proc에서 일정 주기로 합산해서 cpu 사용율을 출력한다.

 

 

references : https://www.cubrid.com/tutorial/3794195

 

 

 

 

댓글