728x90
반응형

문 서 명 : Solaris 10 sar 명령 기본 사용

문 서 버 전 : Ver_1.0

문 서 구 분 :  Manual  Summary

작 성 일 : 2014 07 4

작 성 자 : 우리들의 삶

테 스 트 환 경 : Blade2000, Solaris 10 u11

출 처 : 본인




본 문서는 Solaris 10에서의 SAR 명령의 기초적인 사용 방법에 대하여 기술한다.

SAR(System Activity Reporter)는 시스템의 전반적인 활동 내역을 지정된 시간에 저장하며, 저장된 데이터를 보여주는 명령이다.
Solaris 10에서는 번들로 제공되고 있어 쉽게 사용할 수 있다.


1. SAR 서비스 활성화
[reocom:/]crontab -e sys 
"/tmp/crontabK7aiKb" 8 행, 308 문자
#ident  "@(#)sys        1.5     92/07/14 SMI"   /* SVr4.0 1.2   */
#
# The sys crontab should be used to do performance collection. See cron
# and performance manual pages for details on startup.
#
# 0 * * * 0-6 /usr/lib/sa/sa1   --> 매일 매시 0분에 sa1 스크립트를 실행시켜 시스템 상태를 저장한다.
# 20,40 8-17 * * 1-5 /usr/lib/sa/sa1   --> 월~금에 08:00~17:00 사이 20분과 40분 마다 sa1 스크립트를 실행한다.
# 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A  --> 월~금에 18시 05분에 sa2 스크립트를 실행한다.


위의 명령 내용중 주석처리를 지우거나 용도에 맞게 새로 지정한다.
만약 # vi /var/spool/cron/crontabs/sys 를 통해 수정할 수 있지만 오라클에서는 직접 편집은 못하게한다.(절대 권장하지 않음) crontab -e 명령을 사용하여 기존 crontab 파일을 변경한다.


[reocom:/]svcadm enable sar          --> sar 서비스를 실행시킨다.
혹은 
[reocom:/]svcadm enable system/sar:default 

Tip : sa1과 sa2의 차이점
sa1은 sar 명령을 호출해서 바이너리 형식(데이터)으로 저장한다. 즉 해당 파일을 보려면 sar -f 명령으로 봐야하고,
sa2는 sar 명령을 호출하여 ASCII 출력을 보고서로 저장해서 cat으로 볼 수 있다.

Tip : Crontab
출처 : http://docs.oracle.com/cd/E26925_01/html/E25811/sysrescron-1.html

Crontab 파일 기능
adm 계산
root 일반 시스템 함수 및 파일 시스템 정리
sys 성능 데이터 수집
uucp  일반 uucp 정리

Crontab 필드 구문
필드 의미
1 0-59
2 0-23
3 1-31 일(Day)
4 1-12
5 0-6 요일(0=일요일)
6 명령어 혹은 스크립트 지정된 시간에 실행할 내용
  • 공백을 사용하여 각 필드를 구분한다.
  • 콤마를 사용하여 여러 값을 구분한다.
  • 하이픈(-)을 사용하여 값 범위를 지정한다.
  • 별표와 와일드카드를 사용하여 모든 가능한 값을 포함한다.
  • 라인 시작 부분에 주석 마크(#)를 사용하여 주석이나 빈 라인을 나타낸다.

2. SAR의 활용
2.1 명령어 활용
옵션 의미
-a 파일 엑세스 작업.  주로 DNLC(Directory Name Lookup Cache)와 관련된 내용
  • iget/s : 초당 DNLC에 없는 i-node 요청 회수. 경로의 각각의 토큰에 대해 발생
  • namei/s : 초당 파일 시스템 경로 검색 회수. 이 경로가 DNLC에 없으면 iget/s가 카운트 된다.
  • dirbk/s : 초당 디렉토리 블록을 읽은 횟수
-b 디스크 등의 블록 저장 장치에 버퍼에 관련된 내용
  • bread/s, bwrit/s : 초당 시스템 버퍼 또는 블록 장치에 읽그 쓰기 횟수
  • lread/s, lwrit/s : 초당 시스템 버퍼에서 논리 읽기/쓰기가 발생한 횟수
  • $rcache, %wcache : 캐시 힛트 비율. %rcache = (1-bread/lread), %wcache = (1-bwrit/lwrit)
  • pread/s, pwrit/s : 초당 문자 장치 인터페이스를 사용한 읽기/쓰기 횟수
  • 가장 중요한 항목은 캐시 적중률 %rcache 및 %wcache입니다. 이러한 항목은 시스템 버퍼링의 유효성을 측정합니다. %rcache가 90% 아래로 떨어지거나 %wcache가 65% 아래로 떨어질 경우 버퍼 공간을 늘려 성능을 향상시킬 수 있습니다.
-c System Call과 관련된 내용
  • scall/s : 시스템 콜 횟수
  • sread/s, swrit/s, fork/s, exec/s : read, write, fork, exec 시스템 콜 횟수
  • rchar/s, wchar/s: 초당 read/write 시스템 콜에서 전송된 캐릭터 수
    • Tip : - fork/s 는 4-6명의 시스템에서 초당 약 0.5정도다. 셸 스크립트가 실행중인 경우 이 수는 늘어난다.
    •         - fork/s로 나눈 exec/s가 3보다 클 경우 PATH 변수를 최적화 해보자.
-d Block Device 관련된 내용
  • device : 장치명
  • %busy, avque: 장치의 전송 요청에 대해 서비스 해준 비율, 그 시간동안 처리하지 못한 요청 수(이 요청은 큐에 쌓임)
  • r+w/s, blks/s: 초당 읽기/쓰기 회수, 초당 전송된 블록(512바이트)수
  • avwait: 평균 대기 시간(밀리초)
  • avserv: 평균 서비스 시간(밀리초) iostat 의 svc_t 는 avwait + avserv 이다.
-g Memory paging 관련된 내용
  • pgout/s : 초당 페이지 아웃(요청) 횟수
  • ppgout/s : 초당 페이지 아웃된 페이지수(실제로 페이지 아웃된 횟수)
  • pgfree/s: (페이지 스캐너에 의해) 페이지 프리된 페이지수
  • pgscan/s: 페이지 스캐너의 스캔 회수
  • %ufs_ipf : 메모리 페이지 아웃 용도로 할당된 inode에 관련된 내용으로 무조건 0의 값이어야 한며, 1 이상이면 ufs file system의 inode 갯수를 늘려야 한다.
  • - pgfree/s 에 값이 있다는 의미는 페이지 스캐너가 작동중이라는 의미고, 페이지 스캐너는 시스템의 여유 메모리를 찾는 커널 안의 데몬이다. 따라서 pgfree/s 값이 높다면 여유 메모리를 찾는 작업이 많다는 의미로 이는 메모리가 부족함을 직접적으로 의미한다.
  • - %ufs_ipf 는 0 이어야 하며, 이 수치가 1 이상이면 파일 시스템의 inodes개수를 늘려야 한다. ufs 를 사용하는 경우, [df -o i /UFS/FILESYSTEM]명령을 사용해 inode정보를 얻을 수 있다. ZFS는 inode가 동적으로 관리되기 때문에 inode가 부족해지지 않는다.
-k 커널의 메모리 할당에 관련된 내용
  • sml_mem, alloc, fail : 작은  크기의 메모리(보통 256byte 이하), 풀크기(바이트), 할당 크기(바이트), 실패 횟수
  • lg_mem, alloc, fail : 큰 메모리(보통 4K이하) 풀크기(바이트), 할당 크기(바이트), 실패 회수
  • ovsz_alloc, fail: 매우 큰 메모리 할당 크기(바이트), 실패 회수. 이 크기의 메모리는 풀에서 가져오는 것이 아니라 동적으로 할당한다.
  • - 실패 회수가 높다면, 어플의 메모리 관리에 문제가 있거나 컴파일러 최적화가 잘못되어있거나, 메모리가 부족한 경우인 경우가 많다.
  • 커널 메모리 할당 확인

    KMA를 통해 커널 하위 시스템에서 필요에 따라 메모리를 할당하고 해제할 수 있습니다.

    부하가 가장 많은 시간대에 필요할 것으로 예상되는 최대 메모리 양을 정적으로 할당하는 대신 KMA는 메모리에 대한 요청을 세 범주로 나눕니다.

    • 작음(256바이트 미만)

    • 큼(512바이트- 4킬로바이트)

    • 매우 큼(4킬로바이트 이상)

    KMA는 작은 요청과 큰 요청을 충족하기 위해 두 메모리 풀을 유지합니다. 매우 큰 요청은 시스템 페이지 할당기에서 메모리를 할당하여 충족됩니다.

    KMA 리소스를 사용하는 드라이버 또는 STREAMS를 쓰는 데 사용되는 시스템을 확인하는 경우 sar -k 명령이 유용할 수 있습니다. 그렇지 않은 경우 제공되는 정보가 필요하지 않을 수 있습니다. KMA 리소스를 사용하지만 종료하기 전에 명시적으로 리소스를 반환하지 않는 드라이버나 모듈은 메모리 누수를 유발할 수 있습니다. 메모리 누수로 인해 시간에 따라 KMA로 할당되는 메모리의 양이 늘어나게 됩니다. 따라서 sar -k 명령의 alloc 필드가 시간에 따라 계속 늘어나면 메모리 누수가 있을 수 있습니다. 또 하나의 메모리 누수 지표는 요청 실패입니다. 이 문제가 발생할 경우 메모리 누수로 인해 KMA에서 메모리를 확보하고 할당할 수 없게 됩니다.

    메모리 누수가 발생할 것으로 보이면 KMA에서 메모리를 요청하고 반환하지 않은 드라이버나 STREAMS를 확인해야 합니다.

-q 대기열 관련 내용
  • runq-sz, %runocc: 실행되기 위해 대기하고 있는 쓰레드 개수, 큐가 사용된 시간의 비율
  • swpq-sz, %swpocc: 0 (스왑관련 큐로써, 현재 더이상 사용되지 않음)
  • %runocc 값이 높고(90% 이상) runq-sz 값이 2보다 클 경우, CPU 부하가 높고 응답 속도가 떨어집니다. 이 경우 허용할 만한 시스템 응답 속도를 얻으려면 추가 CPU가 필요할 수 있습니다.
-u CPU 사용률 관련 내용
  • %usr : 프로세서가 사용자 모드인 시간의 백분율을 나열한다.
  • %sys : 프로세서가 시스템 모드인 시간의 백분율을 나열한다.
  • %wio : 프로세서가 유휴 상태이고, I/O 완료를 대기 중인 시간의 백분율을 나열한다.
  • %idle : 프로세서가 유휴 상태이고, I/O를 대기 중이 아닌 시간의 백분율을 나열한다.
  • - 일반적으로 %wio 값이 높다는 것은 디스크의 성능 저하가 발생함을 의미한다.
-y 터미널 작업 관련 내용




2.2 파일 확인
svdc는 시스템에서 수집한 데이터를 /var/adm/sa 디렉토리에 sa{날짜}로 기록한다.
그리고, sa1의 명령 혹은 sa2 명령에 따라 파일의 형식이 달라지고, 삭제되는 시점도 틀리다.

ASCII 파일 : cat /var/adm/sa/sa00
Binary 파일 : sar -f {파일명}


728x90
반응형

+ Recent posts