일단 다른 주변장치와 충돌하지 않는 SCSI번호(CD-ROM드라이버는
일반적으로 6번을 사용하고, Tape드라이버는 일반적으로 4번을
사용합니다.)를 할당하고, PROM prompt에서 probe-scsi명령으로 정상적으로
인식이 되는지 확인합니다. 여기에서 잘 나오면 boot -r명령으로 /dev와
/devices의 파일들을 갱신하면 됩니다.

ok probe-scsi
ok boot -r

보통 외장형 Tape드라이버를 달고 이 작업을 수행하는데 이때 생기는
장치파일은 Solaris 2.x의 경우 /dev/rmt/0 (SCSI 4번을 쓴경우),
/dev/rmt/1 (SCSI 5번을 쓴 경우)이며, SunOS 4.x의 경우에는 /dev/rst0,
/dev/rst1이 생깁니다.
2005/07/05 15:38 2005/07/05 15:38
네트워크를 운영 하다 보면 10/100 AUTO Switch HUB를 많이 사용하게 됩니다.
이렇게 사용하다 보면 우선 편리한 점이 많지만 그렇지 않을 경우도 많습니다.
허브와 서버간의 네트워크 인터페이스가 서로 negotiation을 하지 못하여 네트워크가 되지 않는 경우가 많습니다.
이럴때 아래와 같이 인터페이스의 속도를 조절 하여 사용하면
좀더 효과적이라고 생각하는데....
참고로 대부분의 스위치 허브들이 기본적으로 10/100M half 를 지원하므로 full은 사용하지 않으시기를 바랍니다.
full을 사용하기를 원하신다면 네트워크 담당자와 상의를 하신다음 이용하세요.

hme interface의 parameter를 변경하기 위한 방법에는 2 가지가 있습니다.

a) ndd 명령어를 사용하는 방법
b) /etc/system 화일을 수정하는 방법


1. ndd 명령어를 사용하여 변경

1.1. hme interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 합니다.

# ndd -set /dev/hme adv_100T4_cap 0
# ndd -set /dev/hme adv_100fdx_cap 0
# ndd -set /dev/hme adv_100hdx_cap 0
# ndd -set /dev/hme adv_10fdx_cap 1
# ndd -set /dev/hme adv_10hdx_cap 0
# ndd -set /dev/hme adv_autoneg_cap 0

1.2. hme interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 합니다.

# ndd -set /dev/hme adv_100T4_cap 0
# ndd -set /dev/hme adv_100fdx_cap 0
# ndd -set /dev/hme adv_100hdx_cap 0
# ndd -set /dev/hme adv_10fdx_cap 0
# ndd -set /dev/hme adv_10hdx_cap 1
# ndd -set /dev/hme adv_autoneg_cap 0

1.3. hme interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 합니다.

# ndd -set /dev/hme adv_100T4_cap 0
# ndd -set /dev/hme adv_100fdx_cap 1
# ndd -set /dev/hme adv_100hdx_cap 0
# ndd -set /dev/hme adv_10fdx_cap 0
# ndd -set /dev/hme adv_10hdx_cap 0
# ndd -set /dev/hme adv_autoneg_cap 0

1.4. hme interface의 속도를 100MB half duplex로 설정?려면 다음과 같이 합니다.

# ndd -set /dev/hme adv_100T4_cap 0
# ndd -set /dev/hme adv_100fdx_cap 0
# ndd -set /dev/hme adv_100hdx_cap 1
# ndd -set /dev/hme adv_10fdx_cap 0
# ndd -set /dev/hme adv_10hdx_cap 0
# ndd -set /dev/hme adv_autoneg_cap 0


2. /etc/system 화일을 변경

/etc/system 화일에 변경한 내용은 바로 적용되지 않고, 리부팅한 후에
시스템에 적용됩니다.

2.1 hme interface의 속도를 10MB full duplex로 설정하려면 다음과 같이 합니다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100T4_cap=0
set hme:hme_adv_100fdx_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10fdx_cap=1
set hme:hme_adv_10hdx_cap=0

2.2 hme interface의 속도를 10MB half duplex로 설정하려면 다음과 같이 합니다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100T4_cap=0
set hme:hme_adv_100fdx_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10fdx_cap=0
set hme:hme_adv_10hdx_cap=1

2.3 hme interface의 속도를 100MB full duplex로 설정하려면 다음과 같이 합니다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100T4_cap=0
set hme:hme_adv_100fdx_cap=1
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10fdx_cap=0
set hme:hme_adv_10hdx_cap=0

2.4 hme interface의 속도를 100MB half duplex로 설정하려면 다음과 같이 합니다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100T4_cap=0
set hme:hme_adv_100fdx_cap=0
set hme:hme_adv_100hdx_cap=1
set hme:hme_adv_10fdx_cap=0
set hme:hme_adv_10hdx_cap=0

3. hme 카드가 2개 이상 있는 경우에 개별적인 instance에 대해서 각각 지정하여야 합니다.

# ndd -set /dev/hme instance 0

hme0에 대하여 위에 지정한 파라메터를 여기에 지정합니다.


# ndd -set /dev/hme instance 1

hme1에 대하여 위에 지정한 파라메터를 여기에 지정합니다.


4. 실제 시스템에 설정된 상태를 확인하려면 다음과 같은 명령어로 확인할 수 있습니다.

# ndd -get /dev/hme link_status
# ndd -get /dev/hme link_speed
# ndd -get /dev/hme link_mode

link_status (read only)
0 for Link Down
1 for Link up

link_speed (read only)
0 for 10 Mbps
1 for 100 Mbps

link_mode (read only)
0 for Half-Duplex mode
1 for Full-Duplex mod
2005/07/05 15:38 2005/07/05 15:38
Solaris 시스템 부하 측정



1. 용량 확인

1.1 Sun O/S 일 경우
# df

1.2 Solaris일 경우
# df -k
(참고)만약 root filesystem이 90% 이상일 경우 홈페이지에있는 find 명령어 사용법을 참조하여
비정상적으로 생성된 file을 삭제하라. 그리고 root filesystem에 user의 directory가 있는지
살펴 보아라. 특히 backup 시 device 명을 잘못 주어서 file로 저장되어서 시스템이 full 되는
경우가 많음

(참고) Find 명령어 사용법
1. /usr에 50,000 characters보다 큰 화일 찾아라.
# find /usr -type f -size +50000c -print
2. core file을 삭제하라.
# find / -name core -type f -exec rm {} \;
3. /usr/src에서 이름이 mem*.c인것을 찾아라.
# find /usr/src -type f -name "mem*.c" -print
4. owner가 root이고 set-user-ID를 가지는 모든 화일을 찾아라.
# find / -perm -04000 -user root -type f -exec ls -l {} \;
5. 최근 이틀내에 쓰여진 화일을 찾아라.
# find /usr -ctime -2 -print
6. 최근 이틀내에 쓰여지고 크기가 10,000byte이상인 화일이나 디렉토리를 찾아라.
# find /usr -ctime -2 -size +10000c -exec ls -l {} \;


2. CPU 용량 check

2.1 MP Control and Monitoring

* Processor control and information
* psrinfo - 사용가능한 CPU를 보여준다.
# psrinfo
0 on-line since 09/05/97 10:49:27
2 on-line since 09/05/97 10:49:31
* psradm - Enable or disable CPUs
# psradm -f 2 -> 2번 CPU를 off-line
# psrinfo
0 on-line since 09/05/97 11:16:04
2 off-line since 09/05/97 11:18:34
# psradm -n -a -> 모든 process를 on-line

2.2 CPU Rules for the SOlaris 2.x Operating Environment

# vmstat 30 or mpstat 30
condition Conclusion
0 == r CPU idle
0 < r / ncpus < 3.0 No problem
3.0 <= r / ncpus <= 5 CPU busy
5.0 <= r /ncpus CPU very busy
smtx < 200 No problem
200 <= smtx < 400 Mutex stall
400 <= smtx Mutex stall

# psrinfo | grep -c on (CPU 의 개수)


3. Swap space check

# vmstat 30
Condition Conclusion
100,000K <= swap Swap waste
10,000K <= swap < 100,000K No problem
4,000K <= swap < 10,000K Swap low
1,000K <= swap < 4,000K Swap very low
swap < 1,000K No swap

Action to Take
* Swap Low - 실행되는 프로그램 수를 줄이고, swap space를 늘려라.
* No Swap - 프로그램이 멈출 것이다. 즉시 swap space를 늘려라.

(참고) Swap space 를 늘리려면
1. Sun O/S 4.x 일경우
# mkfile 40m /user/swap  (40mb size)
# swapon /user/swap
# pstat -T    (swap size 확인)
# vi /etc/fstab
/usr/swap   swap   swap   rw 0  0
- swap file 삭제
# rm /user/swap
# vi /etc/fstab - add한 entry 를 삭제  

2. Solaris 2.x 일 경우
# /usr/sbin/mkfile 40m /user/swapfile 
# swap -a /user/swapfile (O/S에 swap file을 추가함) 
# swap -l 
# vi /etc/vfstab 
/user/swapfile - - swap - no - ( 이라인을 추가)
# swap -s
total : 5828kbytes allocated + 2456k reserved = 8284k used, 103792k available
(allocated : 현재 사용, reserved : kernel이 잡아놓음 , available : 사용할수 있는양)
# swap -d /user/swapfile (swap add한 file을 삭제)
          . 

4. Memory 용량 check

# vmstat 30
Condition Conclusion
sr == 0 RAM waste
0 < sr < 200 No problem
200 <= sr < 300 Low RAM
300 <= sr Very low RAM

* Low RAM - 메모리를 증설해야한다.


5. Disk 부하 check

# iostat -x 30
* svc_t (avque + avwait) : disk 응답시간
* 10 - 50 acceptable
* 100 - 1500 not acceptable
* %b : 디스크를 얼마나 많이 쓰는가?
* 5% 이하는 무시
* 60% 이상이면 조정할 필요가있다.


6. Network 부하 Check

# netstat -i 30
Condition Conclusion
(0 (0 (10<=output packets)&&(0.5%<=100*output colls/output packets <2.0%) No problem
(10 <= output packets)&&(2.0%<=100*output colls/output packets<5.0%) Busy network
(10<=output packets)&&(5.0%<=100*output colls/output packets) Very Busy Net
network type is not ie,le,ne or qe;it is bf or nf Not Ethernet

* Busy Network - 네트웍에 너무나 많은 충돌이 생겨서 사용자들이 응답을 기다리는 늘어나 고 throughput이
감소한다. 만약 다른 네트웍이 있다면 부하를 주는 것을 부하가없는 네트웍 으로 옮겨라. 또는 ATM 이나
100-MB Ethernet, FDDI같은 빠른 네트웍으로 upgrade하라.


7. System error messages check

# vi /var/adm/messages
# cd /var/adm
# grep panic *
# grep error *
# grep warning *


8. system 정보 출력

# /usr/platform/'uname -i'/sbin/prtdiag (this show usefull hardware information and failures of system)
# /etc/prtvtoc (show the detail information of disk slice ex) prtvtoc /dev/dsk/c0t0d0s2)
# /usr/sbin/eeprom (user can set some of variables of NVRAM via this command ex) eeprom boot-device=disk3)
# /usr/sbin/prtconf -vp ( Shows device configuration )
# devinfo -vp (Shows device configuration for Solaris 1.x)
# /usr/sbin/sysdef ( Shows software configuration )
# /usr/bin/dmesg | more ( collect system diagnostic messages to form error log
# /usr/proc/bin/ptree (Process trees that contain the process)
# /usr/proc/bin/pwdx pid ( Current working directory for a process)
# /usr/proc/bin/pldd pid ( Dynamic libraries linked into a process)
# /usr/proc/bin/pmap pid ( Address space map)


9. Performance gathering script

date >> /sunsolv/hangdata/vmstat.out
vmstat 30 10 >> /sunsolv/hangdata/vmstat.out
date >> /sunsolv/hangdata/iostat.out
iostat -xtc 30 10 >> /sunsolv/hangdata/iostat.out
date >> /sunsolv/hangdata/ps.out
/usr/ucb/ps -aux >> /sunsolv/hangdata/ps.out
date >> /sunsolv/hangdata/kmstat.out
echo kmastat | crash >> /sunsolv/hangdata/kmstat.out
date >> /sunsolv/hangdata/kernelmap.out
echo "map kernelmap" | crash >> /sunsolv/hangdata/kernelmap.out

위 명령어를 매 15분 마다 실행 하도록 crontab에 등록해놓는다.
2005/07/05 15:37 2005/07/05 15:37