리눅스 성능 측정 도구 패키지 sysstat
해당 패키지는 리눅스 성능 분석 툴을 제공합니다. sar을 사용하기 위해서는 sysstat 설치합니다.
- 설치하기
## ubuntu
sudo apt-get install sysstat
## centos
rpm -ivh sysstat-12.1.3-1.x86_64.rpm
## 설치 후 systemd에 등록합니다.
systemctl enable sysstat
systemctl start sysstat
sar(System Activity Reporter)
리눅스 시스템의 cpu, memory, metwork, disk io 등의 지표 정보를 수집하여 sar command를 통해 실시간으로 지표를 보여주며, 파일로 저장한다. sar을 구성하는 요소는 아래와 같다.
sadc: System Activity Data Collector
지표 데이터를 collect 하며 이를 /var/log/sa/sa~형태의 이진 데이터 파일로 저장하는 도구입니다.
sadf: Display Data collected by sar in multiple formats
지표 데이터 파일은 이진 파일 형식이라 sar로만 report 할 수 있다. sadf는 csv, xml, svg 등의 포맷으로 변환해주는 도구이다. 주로 sar의 데이터를 다른 모니터링 리소스 지표의 데이터로 활용할 때 쓰이며, 최신 버전에선 svg 포맷으로 웹페이지에서 GUI 형식으로 볼 수 있다.
sa1 : Collect and store binary data in the system activity daily data file
sadc로 추출한 모든 지표 데이터를 /var/log/sa날자 파일에 바이너리 형식으로 저장하는 bash스크립트
sa2 : Create a report from the current standard system activity dail data file
sa1으로 생성된 데이터 파일을 기반으로, 원하는 지표 옵션을 선택해 사람이 읽을 수 있는 파일 형태로 저장 (/var/log/sar날짜 파일) 하는 스크립트
참고 : https://brunch.co.kr/@lars/9
Top / Free 값
top을 통해 살펴보는 프로세스 정보들
top
- 시스템의 상태를 전반적으로 가장 빠르게 파악 가능(CPU, Memory, Process)
- 옵션 없이 입력하면 interval 간격(기본 3초)으로 화면을 갱신하며 정보를 보여줌
- top 실행 전 옵션
- 순간의 정보를 확인하려면
-b
옵션 추가(batch 모드) -n
: top 실행 주기 설정(반복 횟수)
- 순간의 정보를 확인하려면
- top 실행 후 명령어
- shift + p : CPU 사용률 내림차순
- shit + m : 메모리 사용률 내림차순
- shift + t : 프로세스가 돌아가고 있는 시간 순
- k : kill. k 입력 후 PID 번호 작성. signal은 9
- f : sort field 선택 화면 -> q 누르면 RES순으로 정렬
- a : 메모리 사용량에 따라 정렬
- b : Batch 모드로 작동
- 1 : CPU Core별로 사용량 보여줌
- ps와 top의 차이점
- ps는 ps한 시점에 proc에서 검색한 cpu 사용량
- top은 proc에서 일정 주기로 합산해 cpu 사용율 출력
[root@localhost user1]# top
top - 02:58:25 up 1:56, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 234 total, 2 running, 232 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.0 us, 1.3 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861308 total, 1690440 free, 864576 used, 1306292 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2706164 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10500 user1 20 0 3685676 190584 66712 S 7.7 4.9 0:37.66 gnome-she+
9945 root 20 0 370108 63752 40936 S 4.3 1.7 0:13.76 X
11221 user1 20 0 681452 30912 17452 S 2.7 0.8 0:05.50 gnome-ter+
3 root 20 0 0 0 0 S 0.3 0.0 0:07.79 kworker/0+
9 root 20 0 0 0 0 R 0.3 0.0 0:01.68 rcu_sched
10468 user1 20 0 233124 5984 3184 S 0.3 0.2 0:00.23 at-spi2-r+
60812 root 20 0 162224 2360 1572 R 0.3 0.1 0:00.15 top
free을 통하여 살펴보는 정보들
free 명령어를 사용하면 쉽게 메모리 사용량과 여유량 그리고 캐싱으로 사용되는 메모리가 얼마나 있는지 파악할 수 있습니다. 실제 free 명령어는 리눅스 /proc/meminfo에서 메모리 정보를 가져와 보여줍니다. 그럼 free 명령어로 볼 수 있는 메모리 정보와 이와 관련된 meminfo의 값들을 알아보겠습니다.
- [total] : 설치된 총 메모리 크기 / 설정된 스왑 총 크기
- [used] : total에서 free, buff/cache를 뺀 사용중인 메모리. / 사용중인 스왑 크기
- [free] : total에서 used와 buff/cahce를 뺀 실제 사용 가능한 여유 있는 메모리량 / 사용되지 않은 스왑 크기
- [shared] : tmpfs(메모리 파일 시스템), ramfs 등으로 사용되는 메모리. 여러 프로세스에서 사용할 수 있는 공유 메모리
- [buffers] : 커널 버퍼로 사용중인 메모리
- [cache] : 페이지 캐시와 slab으로 사용중인 메모리
- [buff/cache] : 버퍼와 캐시를 더한 사용중인 메모리
- [available] : swapping 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기. (예전의 -/+ buffers/cache이 사라지고 새로 생긴 컬럼)
옵션
- [-h] : 사람이 읽기 쉬운 단위로 출력한다.
- [-b | -k | -m | -g] : 바이트, 키비바이트, 메비바이트, 기비바이트 단위로 출력한다.
- [--tebi | --pebi] : 테비바이트, 페비바이트 단위로 출력한다.
- [--kilo | --mega | --giga | --tera | --peta] : 킬로바이트, 메가바이트, 기기바이트, 페타바이트 단위로 출력한다.
- [-w] : 와이드 모드로 cache와 buffers를 따로 출력한다.
- [-c '반복'] : 지정한 반복 횟수 만큼 free를 연속해서 실행한다.
- [-s '초'] : 지정한 초 만큼 딜레이를 두고 지속적으로 실행한다.
- [-t] : 합계가 계산된 total 컬럼줄을 추가로 출력한다.
[root@localhost user1]# free
total used free shared buff/cache available
Mem: 3861308 863568 1691448 42252 1306292 2707172
Swap: 2097148 0 2097148