이번 시리즈는 Nmon에 이어 Sysstat의 설치 및 활용법을 총 2부작으로 나누어 진행할 예정이다.
이번 포스팅은 Syssta 패키지의 설치와 간단한 sar 명령어 및 옵션을 알아보도록 하고,
2탄에서는 실험 환경을 가정한 후, 시각화해보는 시간을 가져볼 것이다.
Sysstat이란?
Sysstat 패키지란 리눅스용 성능 모니터링 도구 모음 패키지이다.
성능 분석을 하기 위해 여러 가지 툴을 제공하는데, 지원하는 대표적인 툴(명령어)은 총 5개이다.
- Sar : CPU, 메모리, 네트워크, Disk I/O 등의 정보를 수집하여 실시간으로 지표를 보여줌
- Iostat : Disk I/O 성능 측정
- Tapestat : tape driver I/O의 성능 측정
- mptat : Disk CPU 성능 측정
- Pidstat: 특정 프로세스의 CPU 및 스레드 정보 측정
이 중 이번 포스팅에서 알아볼 툴은 Sar 명령어이다.
패키지 설치
Sar을 이용하기 위해 우선 sysstat 패키지를 리눅스 환경에서 설치해주어야 한다.
apt-get install sysstat
간단하다! 설치는 여기서 끝난 것이다.
Sar 명령어 옵션 알아보기
Sysstat 패키지를 성공적으로 설치했다면 sar 명령어를 이용할 수 있다!
Sar 명령어는 역할에 따라 다양한 옵션을 갖고, 이러한 옵션들은 ‘sar~’로 시작하는 명령어를 이용해 지정해주어 사용할 수 있다.
대표적인 sar 명령어의 옵션 및 사용 예시들을 소개하면 다음과 같다.
- sar a b
- a초마다 b회 CPU 정보 출력
- -o
- 실행 결과를 파일로 저장
- -f
- 결과물 파일을 출력
- -r
- 메모리의 사용량 정보를 출력
- -n
- 네트워크 사용 정보 출력
- -d
- 디바이스 사용량 정보 출력
- -u
- CPU Utility에 대한 정보 출력
- -p
- 특정 프로세스에 대한 정보만 출력
이 기능들을 적절히 활용해 과제에서 구체적으로 제시한 활동들을 수행할 것이다.
리소스 모니터링 수행
위에서 소개한 옵션들을 활용해 간단한 명령어를 작성하여 모니터링을 수행해보겠다.
1. sar -n DEV 1
# 명령어 수행 결과 network.txt 파일에 저장
sar -n DEV 1 > network.txt
# 저장 내용 출력
cat network.txt
네트워크 사용량 정보에서 1초마다 디바이스별 정보를 출력한다.
명령어의 실행 결과를 network.txt파일에 저장하여 출력해보면 다음과 같다.
결과 대한 설명을 진행해보도록 하겠다.
00시 00분 00초 옆 열은 네트워크 인터페이스 명(IFACE)이고, 1행에 장비 명에 따른 수치이다.
우선 네트워크 장비명에 대한 설명을 하자면
- lo
- loop back을 의미하며, 자기 자신에게 보내는 데이터를 처리하기 위한 가상 인터페이스 장치명이다.
- ens33
- 내가 실제로 사용하고 있는 이더넷 명(
dell이 ens33으로 쓰이는 것으로 알고 있다.)
- 내가 실제로 사용하고 있는 이더넷 명(
다음으로 각 수치명에 대해 알아보면 아래와 같다.
- rxpck/s
- 초당 rx 수
- txpck/s
- 초당 tx 수
- rxkB/s
- 초당 rx한 크기
- txkB/s
- 초당 tx한 크기
- rxcmp/s
- 압축된 패킷의 초당 rx 수
- txcmp/s
- 압축된 패킷의 초당 tx 수
- rxmcst/s
- 초당 rx한 다중 패킷 수
- %ifutil
- NIC에서 사용 가능한 네트워크 대역폭
현재 아무 작업을 하지 않은 상태에서 성능측정을 하여서 그런지 출력 값은 전부 0으로 출력이 되었다.
2. sar -r 1
# 명령어 수행 결과 memory.txt 파일에 저장
sar -r 1 > memory.txt
# 저장 내용 출력
cat memory.txt
1초마다 메모리 사용량 정보를 출력한다
지표에 대한 설명은 아래와 같다.
- kbmemfree
- free 상태에서의 메모리 크기
- kbavail
- 스왑 없이 새로운 프로세스를 시작할 때 사용할 수 있는 메모리 양
- kbmemused
- 유저에서 사용 중인 메모리
- %memused
- 사용 중인 메모리의 점유율
- kbbuffers
- 버퍼 캐시의 메모리 크기
- kbcached
- 페이지 캐시의 메모리 크기
- kbcommit
- 현재 시스템에 할당된 메모리 크기
- %commit
- kbcommit의 메모리 점유율
- kbactive
- 사용 중인 메모리에서 최근에 사용된 메모리 정보
- 메모리 부족으로 여유 메모리를 확보하고자 할 때 후순위
- kbinact
- 사용 중인 메모리에서 최근에 사용되지 않은 메모리의 크기
- kbdirty
- 디스크에 write 하기 위해 대기 중인 크기
현재 메모리는 free 상태에서 약 11.8GB이며, 현재 사용중인 메모리는 약 1.8 GB임을 알 수 있다.
이는 전체 메모리의 13.2%에 해당하는 양임을 알 수 있다.
캐시의 경우 버퍼 캐시는 약 40MB, 페이지 캐시는 약 1.1GB인 것을 알 수 있다.
뿐만 아니라 현재 시스템에 할당된 메모리는 약 2.8GB이며 이는 전체 메모리의 15.86%에 해당하는 크기임을 알 수 있다.
3. sar -d -p 1
# 명령어 수행 결과 disk.txt 파일에 저장
sar -d -p 1 > disk.txt
# 저장 내용 출력
cat disk.txt
1초마다 프로세스에서 이용하는 디바이스 사용량 정보 출력한다.
지표에 대한 설명은 아래와 같다.
- DEV
- 디바이스
- tps
- 초당 입출력 전체의 IOPS
- rKB/s
- 초당 디스크가 read 한 크기
- wKB/s
- 초당 디스크가 write 한 크기
- areq-sz
- 디바이스에 발생되는 요청의 평균 길이
- aqu-sz
- 디바이스에 발생되는 요청의 큐 길이
- await
- 입출력의 평균 처리 시간
- %util
- 디스크의 idle 한계 지표
현재 아무 작업을 하지 않은 상태에서 성능측정을 해서 그런지 출력 값은 전부 0이 출력되었다.
3. sar -u -P ALL 1
# 명령어 수행 결과 cpu.txt 파일에 저장
sar -u -P ALL 1 > cpu.txt
# 저장 내용 출력
cat cpu.txt
1초마다 프로세스의 모든 CPU Utility 정보를 출력한다.
지표에 대한 설명은 아래와 같다.
- %user
- application level에서 실행 중일 때 CPU 사용률
- %nice
- application level에서 nice 가중치를 주었을 때 CPU 사용률
- %system
- 커널에서 실행 중일 때의 CPU 사용률
- %iowait
- 디스크의 입출력이 늦어져 해당 프로세스가 idle 상태가 되는 경우의 비율
- %steal
- virtual CPU에 의해 뜻하지 않는 대기 시간이 생기게 되는 비율
프로그램을 아무것도 사용하지 않은 상태에서 측정해 본 결과 User의 CPU 사용률은 0.99%임을 알 수 있다.
마무리
sysstat 패키지의 설치와 sar 명령어에 대해 알아본 후
간단한 4가지 명령어를 통해 네트워크, 디스크, 메모리, cpu 자원의 모니터링을 수행해보았다.
다음 2탄에는 유튜브 영상을 실행한 상태에서의 리소스 모니터링을 수행한 후
결과를 시각화해보도록 하겠다.
'Linux > Tools' 카테고리의 다른 글
CLI 서버를 GUI로 띄우기 (MobaXterm + VNC) (2) | 2024.02.19 |
---|---|
Bmon_네트워크 모니터링 툴 (21) | 2024.02.09 |
Sysstat (2)_sar 명령어로 모니터링 결과 시각화 해보기 (28) | 2024.01.30 |
Nmon (2)_ Nmon Visualizer 이용해 시각화하기 (2) | 2024.01.24 |
Nmon (1)_ 설치 후 이용해보기 (1) | 2024.01.23 |