사실 한동안 직접적인 기술이나 커맨드가 들어가는 부분에 대한 포스팅은
매우매우 뜸했었는데, 가장 최근 Disk I/O 성능 체크 및 I/O wait 으로 인한 병목을
측정하거나 해소하기 위한 튜닝포인트로 제안할 만한 데이타를 모으는 부분에대해서
갑자기 필요성을 느껴 포스팅한다.
기본적으로 10분마다 /usr/lib64/sa/sa1 을 1초주기로 1번 실행시키는 스케쥴과
/usr/lib64/sa/sa2 로 하루가 끝나는 시기에 다음파일로 넘겨주는 스케쥴이 설정되어있다.
sa1 과 sa2 는 단순한 스크립트로 되어 있으며,
실제 이 스크립트에서 사용하는 data collactor 는 /usr/lib64/sa/sadc 이다.
그냥 실행해보면 ㄹ알수 없는 바이너리 (Ascii) 문자만 뿌려진다.
사용법을 확인해 보자.
자 sadc 를 용할때 추가로 사용 할 수 있는 옵션들에 대해서 나타나있다.
실제로 sa1 스크립트에서는 "-F -L 1 1 - " 의 옵션을 사용하고 있으며,
-S 옵션이 없을 경우엔 가장 기본적인 데이타들을 수집하게 된다.
enhanced data collector 의 방법은 매우 간단하다.
저 -S 옵션을 XALL 로 주는 것이다.
방법은 간단하다. RedHat 계열이라면 기본적으로 /etc/sysconfig 라는 디렉토리에
왠만한 옵션 및 설정들이 들어가는 것을 알고 있어야만 한다.
간단하게 저 파일을 편집해서 SADC_OPTIONS="" 를 "-S XALL" 로 수정해주고,
저장 후 기다리기만 하면 된다. ( HISTORY 수도 30일정도로 올려준다. )
참고로 sa1 의 주요부분을 일부 보도록 하겠다.
sysconfig 의 sysstat 을 읽어와 SADC_OPTIONS 을 주는것을 알 수 있다.
이제 이로써 sar 가 제공하는 모든 데이타 옵션을 사용 할 수 있다.
평소엔 일반적으로 사용 할 수 없었던 -I ALL, -I XALL, -m, -n, -y, -d
등의 확장된 데이타들을 확인 할 수 있다.
/etc/sysconfig/sysstat 에서 HISTFILE 의 값이 28이 넘을 경우 /var/log/sa
디렉토리아래 그달의 디렉토리와 날짜로 된 sa 파일이 새로생성된다.
이렇게 디스크 상태나,
인터럽트등을 볼 수 있다.
이걸로 이제 KSAR 를 이용해 그래프를 그리면 매우 이쁜(?) 그래프가
다양한 Unit 들을 그려주어 보고서 및 분석, 문서화에 도움을 줄 것이다.
간단한데 이런건 사실 관리자입장에서 기본적으로 사용해줘야 한다고 생각한다.
무조건 상용의 툴들을 사용하기보단, 적절한 오픈소스 그리고 기본적인 OS 에서
제공하는 카운터들을 이용하려고 노력하는 것이 중요한 자세이지 않을까?
참고로.. sar 뜯어보면 /proc 의 카운터들을 좀 더 잘 이해 할 수 있다.
(타성에 젖어 잊어버리는 경우를 경고하고자 다들 아는거지만 포스팅 한 것이다.)
매우매우 뜸했었는데, 가장 최근 Disk I/O 성능 체크 및 I/O wait 으로 인한 병목을
측정하거나 해소하기 위한 튜닝포인트로 제안할 만한 데이타를 모으는 부분에대해서
갑자기 필요성을 느껴 포스팅한다.
사실 단순하게 sysstat 에서 제공하는 SAR 를 이용하는 것 뿐이다.
많은 관리자들은 sar 를 그냥 단순히 서버에 발생되는 Issue 에 대한 가장 기초적인
추측과 접근을 위한 툴정도로만 생각하고 사용하며, 심지어 사용조차 안하는 사람들이 많다.
하지만 관리자라면 기본적으로 sysstat 을 반드시 설치하여 sar data 를
주기적으로 쌓아 관리해야 하며, 데이타 retention 주기또한 기본 7일에서
한달가까이로 늘려서 운영해야만 한다고 생각한다.
여기서 설명하고자 하는건 sar 에서 제공하는 Activity Data Collector 인 sadc 다.
/etc/cron.d/sysstat 을 보면 우리는 sar 데이타가 어떻게 쌓이는지 알 수 있다.
[root@Mirr-N ~]# cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
기본적으로 10분마다 /usr/lib64/sa/sa1 을 1초주기로 1번 실행시키는 스케쥴과
/usr/lib64/sa/sa2 로 하루가 끝나는 시기에 다음파일로 넘겨주는 스케쥴이 설정되어있다.
sa1 과 sa2 는 단순한 스크립트로 되어 있으며,
실제 이 스크립트에서 사용하는 data collactor 는 /usr/lib64/sa/sadc 이다.
[root@Mirr-N ~]# /usr/lib64/sa/sadc
��q!
��eOLinuxMirr-N3.2.6-3.fc16.x86_64x86_64��� ��@��P"�� �
�
X��,�[root@Mirr-N ~]#
��q!
��eOLinuxMirr-N3.2.6-3.fc16.x86_64x86_64��� ��@��P"�� �
�
X��,�[root@Mirr-N ~]#
그냥 실행해보면 ㄹ알수 없는 바이너리 (Ascii) 문자만 뿌려진다.
사용법을 확인해 보자.
[root@Mirr-N ~]# /usr/lib64/sa/sadc -h
Usage: /usr/lib64/sa/sadc [ options ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -C <comment> ] [ -F ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]
[root@Mirr-N ~]#
Usage: /usr/lib64/sa/sadc [ options ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -C <comment> ] [ -F ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]
[root@Mirr-N ~]#
자 sadc 를 용할때 추가로 사용 할 수 있는 옵션들에 대해서 나타나있다.
실제로 sa1 스크립트에서는 "-F -L 1 1 - " 의 옵션을 사용하고 있으며,
-S 옵션이 없을 경우엔 가장 기본적인 데이타들을 수집하게 된다.
enhanced data collector 의 방법은 매우 간단하다.
저 -S 옵션을 XALL 로 주는 것이다.
방법은 간단하다. RedHat 계열이라면 기본적으로 /etc/sysconfig 라는 디렉토리에
왠만한 옵션 및 설정들이 들어가는 것을 알고 있어야만 한다.
[root@Mirr-N ~]# cat /etc/sysconfig/sysstat
# sysstat-10.0.2 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=7
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=10
# Parameters for the system activity data collector (see sadc manual page)
SADC_OPTIONS=""
[root@Mirr-N ~]#
# sysstat-10.0.2 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=7
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=10
# Parameters for the system activity data collector (see sadc manual page)
SADC_OPTIONS=""
[root@Mirr-N ~]#
간단하게 저 파일을 편집해서 SADC_OPTIONS="" 를 "-S XALL" 로 수정해주고,
저장 후 기다리기만 하면 된다. ( HISTORY 수도 30일정도로 올려준다. )
참고로 sa1 의 주요부분을 일부 보도록 하겠다.
[mirr@Mirr-N ~]$ cat /usr/lib64/sa/sa1
HISTORY=0
SADC_OPTIONS=""
SYSCONFIG_DIR=/etc/sysconfig
[ -r ${SYSCONFIG_DIR}/sysstat ] && . ${SYSCONFIG_DIR}/sysstat
if [ ${HISTORY} -gt 28 ]
then
...... 중략 ......
ENDIR=/usr/lib64/sa
cd ${ENDIR}
[ "$1" = "--boot" ] && shift && BOOT=y || BOOT=n
if [ $# = 0 ] && [ "${BOOT}" = "n" ]
then
# Note: Stats are written at the end of previous file *and* at the
# beginning of the new one (when there is a file rotation) only if
# outfile has been specified as '-' on the command line...
exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} 1 1 -
else
exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} $* -
fi
HISTORY=0
SADC_OPTIONS=""
SYSCONFIG_DIR=/etc/sysconfig
[ -r ${SYSCONFIG_DIR}/sysstat ] && . ${SYSCONFIG_DIR}/sysstat
if [ ${HISTORY} -gt 28 ]
then
...... 중략 ......
ENDIR=/usr/lib64/sa
cd ${ENDIR}
[ "$1" = "--boot" ] && shift && BOOT=y || BOOT=n
if [ $# = 0 ] && [ "${BOOT}" = "n" ]
then
# Note: Stats are written at the end of previous file *and* at the
# beginning of the new one (when there is a file rotation) only if
# outfile has been specified as '-' on the command line...
exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} 1 1 -
else
exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} $* -
fi
sysconfig 의 sysstat 을 읽어와 SADC_OPTIONS 을 주는것을 알 수 있다.
이제 이로써 sar 가 제공하는 모든 데이타 옵션을 사용 할 수 있다.
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -H ] [ -p ] [ -q ] [ -r ]
[ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -H ] [ -p ] [ -q ] [ -r ]
[ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
평소엔 일반적으로 사용 할 수 없었던 -I ALL, -I XALL, -m, -n, -y, -d
등의 확장된 데이타들을 확인 할 수 있다.
/etc/sysconfig/sysstat 에서 HISTFILE 의 값이 28이 넘을 경우 /var/log/sa
디렉토리아래 그달의 디렉토리와 날짜로 된 sa 파일이 새로생성된다.
[mirr@Mirr-N ~]$ sar -d -p
Linux 3.2.6-3.fc16.x86_64 (Mirr-N) 2012년 03월 18일 _x86_64_ (4 CPU)
DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
sda 3.24 10.84 47.61 18.04 0.01 4.36 2.87 0.93
vg_mirr-LogVol01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol00 3.77 10.84 29.23 10.62 0.01 3.77 2.05 0.77
vg_mirr-LogVol03 0.77 0.00 10.84 14.15 0.00 0.38 0.38 0.03
vg_mirr-LogVol02 0.94 0.00 7.54 8.00 0.00 1.38 1.38 0.13
vg_mirr-LV_Back 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-testdisk 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 4.31 2.84 76.22 18.34 0.02 5.30 3.26 1.40
vg_mirr-LogVol01 0.36 2.84 0.00 8.00 0.01 19.50 2.50 0.09
vg_mirr-LogVol00 3.91 0.00 33.07 8.45 0.01 3.14 2.50 0.98
vg_mirr-LogVol03 1.24 0.00 15.78 12.68 0.00 0.75 0.75 0.09
vg_mirr-LogVol02 2.00 0.00 27.38 13.69 0.01 2.98 1.18 0.24
vg_mirr-LV_Back 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-testdisk 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Linux 3.2.6-3.fc16.x86_64 (Mirr-N) 2012년 03월 18일 _x86_64_ (4 CPU)
DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
sda 3.24 10.84 47.61 18.04 0.01 4.36 2.87 0.93
vg_mirr-LogVol01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol00 3.77 10.84 29.23 10.62 0.01 3.77 2.05 0.77
vg_mirr-LogVol03 0.77 0.00 10.84 14.15 0.00 0.38 0.38 0.03
vg_mirr-LogVol02 0.94 0.00 7.54 8.00 0.00 1.38 1.38 0.13
vg_mirr-LV_Back 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-testdisk 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda 4.31 2.84 76.22 18.34 0.02 5.30 3.26 1.40
vg_mirr-LogVol01 0.36 2.84 0.00 8.00 0.01 19.50 2.50 0.09
vg_mirr-LogVol00 3.91 0.00 33.07 8.45 0.01 3.14 2.50 0.98
vg_mirr-LogVol03 1.24 0.00 15.78 12.68 0.00 0.75 0.75 0.09
vg_mirr-LogVol02 2.00 0.00 27.38 13.69 0.01 2.98 1.18 0.24
vg_mirr-LV_Back 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-LogVol05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vg_mirr-testdisk 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
이렇게 디스크 상태나,
[mirr@Mirr-N ~]$ sar -I ALL
Linux 3.2.6-3.fc16.x86_64 (Mirr-N) 2012년 03월 18일 _x86_64_ (4 CPU)
INTR intr/s
0 0.00
1 9.96
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 0.00
9 1.89
10 0.00
11 0.00
12 0.00
13 0.00
14 0.00
15 0.00
0 0.00
1 5.91
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 0.00
9 1.42
10 0.00
11 0.00
12 0.00
13 0.00
14 0.00
15 0.00
Linux 3.2.6-3.fc16.x86_64 (Mirr-N) 2012년 03월 18일 _x86_64_ (4 CPU)
INTR intr/s
0 0.00
1 9.96
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 0.00
9 1.89
10 0.00
11 0.00
12 0.00
13 0.00
14 0.00
15 0.00
0 0.00
1 5.91
2 0.00
3 0.00
4 0.00
5 0.00
6 0.00
7 0.00
8 0.00
9 1.42
10 0.00
11 0.00
12 0.00
13 0.00
14 0.00
15 0.00
인터럽트등을 볼 수 있다.
이걸로 이제 KSAR 를 이용해 그래프를 그리면 매우 이쁜(?) 그래프가
다양한 Unit 들을 그려주어 보고서 및 분석, 문서화에 도움을 줄 것이다.
간단한데 이런건 사실 관리자입장에서 기본적으로 사용해줘야 한다고 생각한다.
무조건 상용의 툴들을 사용하기보단, 적절한 오픈소스 그리고 기본적인 OS 에서
제공하는 카운터들을 이용하려고 노력하는 것이 중요한 자세이지 않을까?
참고로.. sar 뜯어보면 /proc 의 카운터들을 좀 더 잘 이해 할 수 있다.
(타성에 젖어 잊어버리는 경우를 경고하고자 다들 아는거지만 포스팅 한 것이다.)
'Skills > mY Technutz' 카테고리의 다른 글
Kernel Dump Analysis - #11 (0) | 2014.03.12 |
---|---|
HAL 데몬 사용하기 (Simple) (0) | 2012.04.03 |
Kernel Dump Analysis #10 (2) | 2012.01.01 |
오픈소스 VTL 드라이버 MHVTL 로 테잎사용환경 구축하기 (0) | 2011.12.26 |
마법의 도구 Testdisk 를 이용해 데이타복원하기. (2) | 2011.08.21 |