solaris 정리 7 - [ 성능 측정 , 주기적인 작업 설정 ]
2012. 2. 5. 18:33ㆍ개발/unix
성능 측정
1) vmstat 명령어 : 프로세스,가상메모리,페이징,디스크,cpu 등의 상태 측정.
# vmstat
# vmstat 3 (3초 주기로 성능 측정)
- procs 필드 : 프로세스수와 그에 해당하는 데이타 표시.
r : 실행가능상태로 대기큐에 쌓인 수.
이 수가 크면 cpu가 처리에 애를 먹고 있다는 뜻이다.
r=0 : white(cpu idle)
0<r<3 : green(no problem)
3≤r≤5 : amber(cpu busy)
5<r : red(cpu busy)
b : I/O 자원을 할당받지 못해 블록된 process.
w : swap-out 된 process 수. 이 수가 크면 physical 메모리가 부족하다.
- memory 필드 : 가상메모리와 physical 메모리의 사용 가능량.
swap : 현재 사용 가능한 스왑 크기.
free : 사용가능한 free 메모리 크기(kb). 인스톨메모리의 6%보다 계속 작으면 가용메모 리가 부족. 잠재적인 병목 현상.
- page 필드 : 초당 발생하는 fault page 수와 실행중인 페이징 표시.
(paging
: 가상 기억 장치를 통하여 동작하는 프로그램에서 사용되는 프로그램과 데이터 를 주기억 장치에 설치하기 위하여 사용되는
방법의 한 가지. 가상 기억 장치를 고정 길 이의 페이지로 구분하고 이러한 페이지를 하나의 단위로 하여 주기억 장치에
설치하고 주 소를 변환한다.)
re : page reclaim
mf : minor fault
pi : page in(kb)
po : page out(kb)
fr : free(kb)
de : 단기간의 메모리 부족분. swap-in을 막기위해 swap-out시에 설정된 인공적인
memory 부족분.
sr : 가용메모리 부족시에 활성화된 페이지 데몬 수. sr이 크면 가능메모리 부족.
sr=0 : white
0<sr<200 : green
200≤sr≤300 : amber
400<sr : red
- disk 필드 : 초당 disk 조작수.
- faults 필드 : 초당 trap/interrupt 비율.
(trap
:하나의 명령어가 실행될 때마다 자동적으로 발생되는 인터럽트. 이러한 인터럽트 는 중앙 처리 장치에 의하여
하드웨어적으로 발생하게 되는데 프로그램에서 하나 의 명령어가 실행될 때마다 자동적으로 미리 정의된 트랩 처리
루틴으로 실행의 제어권이 넘어온다. 따라서, 프로그램의 동작 상황을 하나의 명령어 단위로
추적 할 수 있는데 일반 응용 소프트웨어의 디버깅 목적보다는 하드웨어 장치와 밀접한 관련이
있는 시스템 소프트웨어에서 오류를 찾아내기 위한 수단으로 이용된다.)
in : device interrupt(non clock)
sy : 초당 system fault
cs : cpu context switch 비율.
- cpu 필드 : cpu 사용 시간에 대한 백분율(%)
us : 사용자 사용 시간
sy : 시스템 사용 시간
id : idle 시간
# vmstat -s (시스템 부팅 후 발생한 모든 event)
# vmstat -S 3
-S : 're' 와 ‘mf' 필드를 ’si' 와 ‘so' 필드로 바꾼다.
si : 초당 swap-in 된 페이지.
so : swap-out 된 전체 프로세스 수.
# vmstat -c 3 (cache flushing 상태)
# vmstat -i (각 device의 interrupt 사항)
2) iostat : 각 디스크에 받는 로드 측정, 디스크 입출력, 활용도, Queue크기, 트랙잭션율, 서비스시간 등.
-c : user mode, system mode, I/O를 위한 waiting, idle 등에 사용된 시간의 백분율.
-D : 초당 diskdml read, write와 utilization에 대한 백분율.
-t : 초당 터미널에서 사용된 read, write의 caracter 수.
-x : 추가된 모든 disk들의 상태 표시.
# iostat -xtc 3
서비스시간(svc_t) : 입출력 요구에 소요된 시간. 다른 요구가 처리중이므로 Queue에서 대기하는 시간도 포함. 30초 평균이 30%이상이면 점검 필요.
# iostat -D 3
I/O가 가장 활발할 때 사용. util(디스크 사용도)가 65%이상이면 과부하.
util<5% : white
5%<util<35% : green
35%<util<65% : amber
65%<util : red
3) sar(system activity reporter) : 시스템의 여러 리소스들이 성능 측정, 운영중인 상태에서 자동으로 데이터 수집. 파일로 정리 가능.
# sar 3 5 (3초 간격, 5번 실행)
# sar -o /tmp/sar_1.file 3 5 (파일로 저장)
# sar -f /tmp/sar_1.file (파일 읽기)
# sar -b 3 5
(버퍼 activity 검사. % reache≤90, %wcache≤65, 버퍼스페이스증가, 성능증가)
# sar -d 10 3 (disk의 I/O 점검, 디스크 사용량 점검)
# sar -g 10 3 (memory와 page-out 점검, 이 값이 높으면 가용메모리 부족)
# sar -q 10 3
(process 점검, 실행대기큐내의 프로세스 검색, runq-sz가 계속 2 이상이면 cpu 한계치 - 메모리상에 대기중인 process thread 수)
# sar -r 10 3
(가용메모리와 swap-file disk block, 가용메모리가 인스톨메모리의 6%보다 계속 작으면 가용메모리가 부족)
4) netstat : 각 network interface의 전송상태를 알 수 있다.
# netstat -i 5
network collision rate(%)=Collis/Opkts, 5%≤ncr≤10%이면 네트워크 오버로드 초래.
input packet error rate(%)=Ierrs/Ipkts > 0.25%이면 패킷 드롭.
output patcket error rate(%)=Oerrs/Opkts
5) snoop : 네트워크에서 패킷 캡쳐. 모든 client와 server간의 call trace를 담을 수 있다.
# snoop -o /tmp/a (네트워크 패킷을 파일로 저장)
# snoop -i /tmp/a (파일 읽기)
주기적인 작업 설정
주기적인 작업 설정
- crontab 명령어
crontab 파일 : /var/spool/cron/crontabs/user명(crontab을 실행한 user명)
crontab 명령어 : crontab 파일을 편집.
cron daemon : crontab 파일의 내용을 읽어서 지정된 시간에 작업을 수행.
crontab 명령어
|
|
옵션
|
의 미
|
-e
|
crontab 파일을 편집할 때 사용.
|
-l
|
crontab 파일의 내용을 화면에 출력할 때 사용.
|
-r
|
crontab 파일을 삭제할 때 사용.
|
/etc/default/cron 파일
|
|
변수명
|
의 미
|
CRONLOG
|
변수값이 yes일 경우 작업 실행 후 그 기록을 남긴다.
|
PATH
|
crontab -e 명령어를 root 사용자가 아닌 일반 사용자들이 사용하여 작업을 만들었을 경우에 그 작업들이 수행될 때 사용하는 PATH 변수의 값을 명시한다.
|
SUPATH
|
crontab -e 명령어를 root 사용자가 사용하여 작업을 만들었을 경우에 그 작업들이 수행될때 사용하는 PATH 변수의 값을 명시한다.
|
/etc/cron.d 디렉토리
|
|
파일명
|
의 미
|
cron.deny
|
default로 존재한다.
crontab 명령어를 사용할 수 없는 사용자 이름 등록.
cron.allow 파일에 열거된 사용자라 할지라도 cron.deny 파일에 열거된 경우 crontab명령어를 사용할 수 없다.
|
cron.allow
|
default로 존재하지 않는다.
crontab 명령어를 사용할 수 있는 사용자 이름 등록.
cron.deny 파일이 우선시 된다. 하지만 cron.deny와 cron.allow 파일이 모두 존재하지 않을 경우에는 오로지 root 사용자만이 crontab 명령어를 사용할 수 있다.
|
crontab 파일의 필드 구성
|
|
필드
|
의 미
|
분
|
0~59까지 숫자 사용. ex) 10-30 or 10,20,30 or *
|
시
|
0~23까지 숫자 사용. ex) 3-5 or 1,2,3 or *
|
일
|
1~31까지 숫자 사용. ex) 1-10 or 1,3,5 or *
|
월
|
1~12까지 숫자 사용. ex) 2-5 or 3,6,9 or *
|
요일
|
0~6까지 숫자 사용. ex) 0-3 or 0,3,5 or *
0 : 일요일, 1 : 월요일, ..... , 6 : 토요일
|
작업
|
반드시 절대경로명을 사용한다. ex) /usr/bin/banner "time to go!" > /dev/console
|
# EDITOR=vi (editor 설정)
# export=EDITOR
# vi /etc/cron.d/cron.allow (crontab 명령어가 수행되지 않을시 user명을 추가해준다.)
root
user명
# crontab -e (crontab 생성)
# crontab -e user명 (user명에 해당하는 crontab 생성)
30 17 * * 5 /usr/bin/banner "Time to go!" > /dev/console
:wq (/var/spool/cron/crontabs/user_name 에 저장된다.)
(^C : 저장하지 않고 빠져 나옴. ^D : 파일을 비우고 빠져 나옴. 사용주의)
# crontab -l (리스트 확인)
# crontab -l user명 (user명에 해당하는 리스트 확인)
# crontab -r user명 (crontab 삭제)
- at 명령어
정해진 시간에 한 번 실행하며 실행된 후에는 작업 목록에서 제거된다.
at 명령어 : 지정된 시간에 실행할 작업을 입력하고, 대기 목록을 확인, 제거한다.
atq 명령어 : 현재 대기중인 작업의 목록을 확인한다.
atrm 명령어 : 대기중인 작업을 제거한다.
cron daemon : crontab과 마찬가지로 at 파일의 내용을 정해진 시간에 수행한다.
at 파일 : /var/spool/cron/atjobs 디렉토리에 *.a 형태로 저장된다.
/etc/default/cron 파일은 cron daemon 프로세스가 실행될때 읽는 파일이기 때문 에 at 프로그램에서도 똑같이 동작된다.
/etc/cron.d 디렉토리
|
|
파일명
|
의 미
|
at.deny
|
default로 존재한다.
at 명령어를 사용할 수 없는 사용자 이름 등록.
at.allow 파일에 열거된 사용자라 할지라도 at.deny 파일에 열거된 경우 at 명령어를 사용할 수 없다.
|
at.allow
|
default로 존재하지 않는다.
at 명령어를 사용할 수 있는 사용자 이름 등록.
at.deny 파일이 우선시 된다. 하지만 at.deny와 at.allow 파일이 모두 존재하지 않을 경우에는 오로지 root 사용자만이 at 명령어를 사용할 수 있다.
|
at 프로그램의 형식
at [-m] -t time_date
at [-m] time [date]
at -l
at -r at_job_id
atq
atrm [-ai] [[at_job_id][user]]
|
|
옵션
|
의 미
|
-m
|
작업 수행 후 그 결과는 작업을 만든 사용자에게 메일로 전송.
|
-t
|
[[CC]YY]MMDDhhmm[.SS] 형식에 따라 작업을 수행한다. -t 옵션이 없을 경우 시간과 날짜를 사람들이 쉽게 인식할 수 있는 방법으로 입력한다.
CC : 세기(century) - 1 YY : 연도의 끝 두 자리
MM : 월(month) DD : 일(day)
hh : 시(hour) mm : 분(minute)
SS : 초(second)
|
-l
|
현재 대기중인 작업의 목록을 확인.
|
-r
|
특정 작업 삭제 가능. atrm 명령어 다음에 작업 식별 번호를 입력하는 것과 같다.
|
-a
|
atrm 명령어에서 사용. 특정인에게 대기중인 모든 작업 삭제.
|
-i
|
atrm 명령어에서 사용. 대기작업을 지울때마다 다시 확인하는 기능.
|
# date
Sat Feb 21 19:14:27 KST 2004
# at 19:20
at> find / -name core -exec rm {} ;
at> find / -type f -name "*.txt" -exec cp {} /dir01 ;
at> ^D
commands will be executed using /sbin/sh
job 1077358800.a at Sat Feb 21 19:20:00 2004
# at -l
user = root 1077358800.a Sat Feb 21 19:20:00 2004
# atq
Rank Execution Date Owner Job Queue Job Name
1st Feb 21, 2004 19:20 root 1077358800.a a stdin
# ls -l /var/spool/cron/atjobs
total 2
-r-Sr--r-- 1 root other 461 Feb 21 19:15 1077358800.a
# at -r 1077358800.a
# atq
no files in queue.
'개발 > unix' 카테고리의 다른 글
Unix AIX에서 시스템 재 부팅시 자동으로 시작되게 설정하는 방법 init관련 (0) | 2012.02.05 |
---|---|
solaris 정리 8 - [ 맞춤식 점프스타트, 백업과 복구 ] (0) | 2012.02.05 |
solarsi 정리 6 - [ 시스템 관리 ] (0) | 2012.02.05 |
정리 5 - [ 디스크사용관리,Software 추가/삭제,Patches ] (0) | 2012.02.05 |
solaris 정리 4 - [ Device ] (0) | 2012.02.05 |