sar 란 ?
- System Activity Report 커맨드
- 현재 사용량 뿐만 아니라, 시스템에 예약작업으로 등록되어 있어서 리소스 사용량을 주기마다 기록/저장하여 이전의 상태와 변화 추이를 확인할 수 있음
- 설치가 안되어있으면 yum install sysstat 패키지 설치하면 됨.
사례 1)
1. 시스템이 메모리를 100% 사용 한 후 reboot 된 상황,
2. sar 데이터를 통해 부하의 원인을 분석
3. sar 데이터는 11:25:04 am을 마지막으로 더 이상 찍히지 않았고, 이후 시스템은 reboot 된 것을 확인
4. sar 데이터 주기 1분
5. OS - rhel 7
$ sar -r
kbactive : 프로세스에 의해서, 비교적 최근에 메모리로 로드된 메모리 공간의 크기를 의미하며
, kilobyte 단위의 표시입니다. 최근에 로드된 메모리는 프로세스에서 사용하는 부분일 수 있으므로,
다른 프로세스의 메모리 요청시에도 되도록이면 이 영역에서는 잘 회수되지 않습니다.
%memused : 현재 시스템의 전체 메모리 중에 사용중인 메모리의 비율을 표시합니다.
어떤 프로세스에 의해서 메모리 요청이 급증하여 메모리 사용률과 kbactive 값이 급격히 증가
$ sar -B
pgpgin/s : 초당 시스템이 디스크에서 페이징한 총 킬로바이트 수입니다.
pgpgout/s : 초당 시스템이 디스크로 페이징 아웃한 총 킬로바이트 수입니다.
pgfree/s : 초당 시스템에서 사용 가능한 목록에 배치한 페이지 수입니다.
pgscank/s : kswapd 데몬이 초당 스캔한 페이지 수입니다.
pgscand/s : 초당 직접 스캔한 페이지 수입니다
pgsteal/s : 메모리 요구를 충족하기 위해 시스템이 초당 캐시(페이지 캐시 및 스왑 캐시)에서 재확보한 페이지 수입니다.
%vmeff : pgsteal / pgscan으로 계산되는 이것은 페이지 회수 효율성의 지표입니다.
11:21:54부터 pgpgin/s와 pgpgout/s가 크게 증가 -> 디스크를 읽고 쓰는 작업이 다량 발생
%vmeff는 24.03%기록 (페이지 재사용 / 페이지 스캔) - 페이지 재사용률을 백분율로 보여줌
- 프로세스의 메모리 요청으로 필요한 만큼 메모리를 회수했는지 알 수 있음
- 0이거나 100이어야 정상. 100보다 낮은 수치의 경우에는 메모리 할당 요청을 하였으나, 원하는 시간 내에 처리 되지 않았을 가능성이 높음
- 즉, 메모리 할당이 늦어졌으며 메모리가 부족한 상태였음을 알 수 있음
$ sar -S
- Swap 공간의 사용량 확인
메모리가 부족한 상황에서의 디스크I/O라면 Swap In/Out 발생했을 수도 있음
0 -> 100% 로 swap 메모리 크기가 증가함
최종적으로 메모리 사용률(kbmemused)와 swap 사용률(%swpused)이 100% 가까이 증가하였고, %vmeff 값을 통해 필요한 메모리 할당이 원하는 시간 내에 처리되지 않았음을 알 수 있음.
따라서 시스템의 메모리가 부족한 상황이였음을 알 수 있음.
기타 리소스 사용 정보 (CPU usage)
$sar -u
%iowait : 프로세스가 디스크I/O의 요청으로 대기 상태에 있었던 시간의 백분율
11:21:54 iowait 가 크게 증가함 -> I/O 요청으로 대기 상태인 프로세스가 증가하였고, 디스크 액세스가 발생하고 있다는 것을 알 수 있음.
-> sar -B에서도 디스크 I/O가 많이 발생하였다는 것을 확인하였지만, -u 로도 프로세스의 I/O 요청이 많았다는 것을 확인 가능
$ sar -q
큐(run queue)길이와 Load Averages를 확인 가능
runq-sq : 런타임에 실행되기 위해 대기 중인 프로세스 수
blocked : I/O 요청이 완료되기를 기다리는 프로세스 수
해당 시간대에 대기열에 쌓인 프로세스와 I/O가 완료되기를 기다리는 프로세스의 수가 급증하였기 때문에 요청된 I/O가 많았다는 것을 추측 가능함.
또한 다량의 디스크 I/O 요청으로 swap을 포함한 메모리 사용이 100%까지 증가하였고, 이로 인해 CPU에서 프로세스를 처리하지 못해 큐에 프로세스가 많이 쌓였다고 추측해 볼 수 있음.
분석 결과
sar 의 -r , -B 옵션을 통해서 memory usage 와 process 의 memory 요청이 급증한 것을 확인하였습니다.그리고, sar -S 로 memory 가 부족으로 인한 swap used 증가를 확인했습니다.그 이후에는 sar 정보나 kernel dump 등이 발생하지는 못하였지만,계속적인 memory 부족이 process 수행이나 block I/O 동작등의 지연을 유발하고 그로 인해 전체적인 시스템 동작 문제로 kernel 이 시스템을 reboot 했을 것으로 추정할 수 있을 것 같습니다.
'OS > Linux&Unix' 카테고리의 다른 글
[Linux] netstat 명령어 (0) | 2024.03.19 |
---|---|
[rhel8.4] rpm / yum 명령어 (0) | 2024.03.19 |
[rhel8.4] iostat 명령어 및 옵션 (0) | 2024.03.18 |
[rhel8.4] top 명령어 (0) | 2024.03.18 |
[rhel8.4] ps 명령어 (0) | 2024.03.18 |