sar 명령어는 다양한 시스템 자원의 사용 현황을 수집하고 보고하는 강력한 성능 모니터링 도구입니다. 아래는 sar 명령어의 주요 기능별 옵션 목록입니다.
1. 데이터 소스 관련
- -f [파일]: 과거 성능 데이터를 분석하기 위해 히스토리 파일에서 데이터를 읽습니다.
- -s [HH:MM:SS]: 리포트 시작 시간을 설정합니다.
- -e [HH:MM:SS]: 리포트 종료 시간을 설정합니다.
2. 모니터링 항목 관련
- -u: CPU 사용률을 표시하며, 사용자 모드, 커널 모드 및 유휴 상태의 CPU 시간 비율을 포함합니다.
- -P [CPU|ALL]: 특정 CPU 코어의 사용 상황을 모니터링하며, -P ALL은 멀티 코어 시스템에서 전체 CPU를 대상으로 합니다.
- -r: 메모리와 스왑 공간의 사용 상황을 표시합니다.
- -S: 스왑 공간의 활용도를 보여줍니다.
- -d: 디스크 I/O 활동 정보(읽기/쓰기 속도 및 I/O 큐 길이 등)를 제공합니다.
- -b: I/O 전송 속도(초당 블록 수 읽기/쓰기)를 표시합니다.
- -n [DEV|EDEV|TCP|ETCP]: 네트워크 장치 또는 TCP 프로토콜 계층 통계를 모니터링합니다.
- -q: 시스템 로드 정보(실행 큐 길이 및 평균 로드 값)를 표시합니다.
- -w: 프로세스 컨텍스트 스위칭 관련 통계를 제공합니다.
- -v: inode, 파일 핸들 및 기타 커널 테이블 상태를 보여줍니다.
- -B: 페이지 교환 활동 통계를 표시합니다.
- -H: Huge Pages 사용 현황을 모니터링합니다.
- -I [인터럽트 번호|SUM]: 특정 인터럽트 또는 전체 인터럽트 상황을 추적합니다.
- -m [ALL|키워드]: 파워 관리 지표를 모니터링합니다(커널 버전 3.4 이상 필요).
3. 출력 제어 관련
- -o [파일]: 이진 형식으로 모니터링 데이터를 파일에 저장하여 이후 분석에 사용할 수 있습니다.
- -A: 모든 리포트 정보를 표시하며, 일반적으로 여러 옵션 조합과 동일합니다.
- -p: 친화적인 형식으로 장치 이름(예: /dev/sda)을 표시합니다.
4. 시간 제어 관련
- -i [초]: 데이터 수집 간격을 설정하며, -o 옵션과 함께 사용해야 합니다.
- [간격] [회수]: 샘플링 간격(초 단위)과 샘플링 횟수를 지정합니다.
5. 특수 모드 관련
- -x [프로세스 ID]: 특정 프로세스의 상세 상태를 표시합니다.
실제 예제
CPU 사용률 확인
sar -u 1 5
위 명령어는 CPU 사용률을 1초마다 5번씩 보고합니다. 결과는 다음과 같은 필드로 구성됩니다:
- %user: 사용자 공간에서 실행된 프로세스가 차지한 CPU 시간 비율.
- %nice: 우선순위 변경된 사용자 프로세스가 차지한 CPU 시간 비율.
- %system: 커널 공간에서 실행된 시스템 프로세스가 차지한 CPU 시간 비율.
- %iowait: I/O 작업 완료를 기다리는 동안 CPU가 차지한 시간 비율.
- %idle: CPU가 유휴 상태인 시간 비율.
메모리 사용량 확인
sar -r 2 3
위 명령어는 메모리 사용 현황을 2초마다 3번씩 보고합니다. 출력 내용에는 다음 필드들이 포함됩니다:
- kbmemfree: 현재까지 사용 가능한 메모리 크기(KB 단위).
- kbmemused: 현재까지 사용 중인 메모리 크기(KB 단위).
- %memused: 전체 메모리 중 사용 중인 메모리 비율.
- kbbuffers: 버퍼에 할당된 메모리 크기(KB 단위).
- kbcached: 캐시에 할당된 메모리 크기(KB 단위).
디스크 I/O 활동 확인
sar -d 1 2
네트워크 트래픽 확인
sar -n DEV 1 3
모니터링 데이터 파일로 저장
sar -o /tmp/system_monitor.log 5 10
위 명령어는 5초 간격으로 10번의 데이터를 수집하여 '/tmp/system_monitor.log' 파일에 저장합니다.
히스토리 데이터 확인
sar -f /var/log/sysstat/sa15
위 명령어는 15일째의 성능 데이터를 확인합니다.