FreeBSD 7.1의 큰 변화는 첫째 기본 스케쥴러의 변경, 두번째 '트레이싱, 디버깅 그리고 모니터링의 강화'라고 할 수 있을 정도로 이부분의 발전이 돋보인다. 달라진 것을 간단히 적어본다.
1. SCHED_ULE 스케쥴러
GENERIC 커널에서 기본 스케줄러가 SCHED_4BSD 에서 SCHED_ULE 으로 변경되었다. 7.0에서는 커널 컴파일을 통해서 SCHED_ULE 로 변경할 수 있었다.
2. DTrace
OpenSolaris의 DTrace가 드디어 FreeBSD에 포팅되었다. DTrace 사용을 위해서는 커널 설정 파일에 다음을 추가한다.
그리고, 모든 소스는 CTF 옵션을 포함된 상태로 리빌드되어야 한다.
DTrace사용을 위한 자세한 준비 과정은 http://www.freebsd.org/doc/en/books/handbook/book.html#DTRACE 에서
3. 몇가지 명령어의 옵션 추가
1) top 명령에서 -P 옵션으로 CPU별 통게를 볼 수 있다. 리눅스 top에서 '1'를 눌러을 때와 같은 것으로 보면 되다.
(이 옵션은 FreeBSD 6.4에서도 사용 가능)
2) top 명령에서 -a 옵션으로 프로세스의 argument를 볼 수 있다.
[ 옵션 사용전 ]
[ top -a ]
3) vmstat -P 옵션으로 CPU별 통계를 볼 수 있다. (이 옵션은 FreeBSD 6.4에서도 사용 가능)
4) traceroute 명령에서 -a옵션으로 AS number도 함께 볼 수 있다.
5) arp 명령에서 reject와 blackhole 키워드를 지원한다.
6) cp 명령에서 -a 옵션(archive mode)을 지원한다. -RpP 옵션과 동일. 리눅스의 GNU cp 옵션과 동일하다고 보면 된다.
4. /etc/sysctl.conf.local 설정 파일
rc 스크립트(/etc/rc.d/sysctl)에서 /etc/sysctl.conf 로딩한 후에 /etc/sysctl.conf.local 설정도 로딩하도록 되어 있다.
따라서 서버별 개벌 설정은 sysctl.conf를 수정하지 않고 /etc/sysctl.conf.local에 넣어도 된다.
5. truss 명령
truss는 리눅스의 strace, 솔라리스의 truss처럼 프로세스의 시스템 콜을 추적한다. FreeBSD 6.x 버전에서는 truss를 사용하기 위해서 아래처럼 process 파일시스템을 /proc에 마운트 해줘야 했다. 그러나 FreeBSD 7.0부터 더이상 procfs 파일시스템에 의존하지 않기 때문에 mount_procfs 명령을 사용할 필요없이 시스템 콜을 추적할 수 있다.
사용예) truss ls
-f 옵션을 사용하면 fock되는 프로세스까지 추적할 수 있다.
6. 부트로더의 변경으로 USB에서 부팅할 수 있고, GPT 레벨 디스크에서 부팅할 수 있다.
* 2008/04/18 - [IT이야기] - FreeBSD 7 관련 도서 2권
* 2008/03/11 - FreeBSD 7.0과 Linux 간의 성능 비교
* 2008/03/07 - [시스템이야기] - FreeBSD 7.0 사용기
* 2008/02/28 - [시스템이야기] - FreeBSD 7.0 릴리즈
1. SCHED_ULE 스케쥴러
GENERIC 커널에서 기본 스케줄러가 SCHED_4BSD 에서 SCHED_ULE 으로 변경되었다. 7.0에서는 커널 컴파일을 통해서 SCHED_ULE 로 변경할 수 있었다.
options SCHED_ULE # ULE scheduler
2. DTrace
OpenSolaris의 DTrace가 드디어 FreeBSD에 포팅되었다. DTrace 사용을 위해서는 커널 설정 파일에 다음을 추가한다.
options KDTRACE_HOOKS # Kernel DTrace hooks
options DDB_CTF
options DDB_CTF
그리고, 모든 소스는 CTF 옵션을 포함된 상태로 리빌드되어야 한다.
# cd /usr/src
# make WITH_CTF=1 kernel
# make WITH_CTF=1 kernel
DTrace사용을 위한 자세한 준비 과정은 http://www.freebsd.org/doc/en/books/handbook/book.html#DTRACE 에서
3. 몇가지 명령어의 옵션 추가
1) top 명령에서 -P 옵션으로 CPU별 통게를 볼 수 있다. 리눅스 top에서 '1'를 눌러을 때와 같은 것으로 보면 되다.
(이 옵션은 FreeBSD 6.4에서도 사용 가능)
last pid: 96507; load averages: 0.00, 0.00, 0.00 up 5+04:46:52 19:08:27
25 processes: 1 running, 24 sleeping
CPU 0: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 1: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 2: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 3: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 4: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 5: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 6: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 7: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 12M Active, 7956K Inact, 37M Wired, 1088K Cache, 13M Buf, 1941M Free
Swap: 4096M Total, 4096M Free
25 processes: 1 running, 24 sleeping
CPU 0: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 1: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 2: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 3: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 4: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 5: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 6: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
CPU 7: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 12M Active, 7956K Inact, 37M Wired, 1088K Cache, 13M Buf, 1941M Free
Swap: 4096M Total, 4096M Free
2) top 명령에서 -a 옵션으로 프로세스의 argument를 볼 수 있다.
[ 옵션 사용전 ]
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
39948 coffeenix 1 44 0 8432K 2792K select 0 0:23 0.00% sshd
857 root 1 44 0 5880K 2372K select 1 0:04 0.00% sendmail
867 root 1 8 0 3212K 1036K nanslp 2 0:01 0.00% cron
39948 coffeenix 1 44 0 8432K 2792K select 0 0:23 0.00% sshd
857 root 1 44 0 5880K 2372K select 1 0:04 0.00% sendmail
867 root 1 8 0 3212K 1036K nanslp 2 0:01 0.00% cron
[ top -a ]
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
39948 coffeenix 1 44 0 8432K 2792K select 0 0:23 0.00% sshd: coffeenix@ttyp0 (sshd)
857 root 1 44 0 5880K 2372K select 1 0:04 0.00% sendmail: accepting connections (sendmail)
867 root 1 8 0 3212K 1036K nanslp 2 0:01 0.00% /usr/sbin/cron -s
39948 coffeenix 1 44 0 8432K 2792K select 0 0:23 0.00% sshd: coffeenix@ttyp0 (sshd)
857 root 1 44 0 5880K 2372K select 1 0:04 0.00% sendmail: accepting connections (sendmail)
867 root 1 8 0 3212K 1036K nanslp 2 0:01 0.00% /usr/sbin/cron -s
3) vmstat -P 옵션으로 CPU별 통계를 볼 수 있다. (이 옵션은 FreeBSD 6.4에서도 사용 가능)
# vmstat -P 1
procs memory page disks faults cpu0 cpu1 cpu2 cpu3
r b w avm fre flt re pi po fr sr da0 da1 in sy cs us sy id us sy id us sy id us sy id
0 0 0 82940K 891M 29 0 0 0 29 7 0 0 16 100 449 0 0 100 0 0 100 0 0 100 0 0 100
0 0 0 82940K 891M 1 0 0 0 0 0 0 0 7 117 370 0 1 99 0 0 100 0 3 97 0 0 100
procs memory page disks faults cpu0 cpu1 cpu2 cpu3
r b w avm fre flt re pi po fr sr da0 da1 in sy cs us sy id us sy id us sy id us sy id
0 0 0 82940K 891M 29 0 0 0 29 7 0 0 16 100 449 0 0 100 0 0 100 0 0 100 0 0 100
0 0 0 82940K 891M 1 0 0 0 0 0 0 0 7 117 370 0 1 99 0 0 100 0 3 97 0 0 100
4) traceroute 명령에서 -a옵션으로 AS number도 함께 볼 수 있다.
5) arp 명령에서 reject와 blackhole 키워드를 지원한다.
6) cp 명령에서 -a 옵션(archive mode)을 지원한다. -RpP 옵션과 동일. 리눅스의 GNU cp 옵션과 동일하다고 보면 된다.
4. /etc/sysctl.conf.local 설정 파일
rc 스크립트(/etc/rc.d/sysctl)에서 /etc/sysctl.conf 로딩한 후에 /etc/sysctl.conf.local 설정도 로딩하도록 되어 있다.
따라서 서버별 개벌 설정은 sysctl.conf를 수정하지 않고 /etc/sysctl.conf.local에 넣어도 된다.
5. truss 명령
truss는 리눅스의 strace, 솔라리스의 truss처럼 프로세스의 시스템 콜을 추적한다. FreeBSD 6.x 버전에서는 truss를 사용하기 위해서 아래처럼 process 파일시스템을 /proc에 마운트 해줘야 했다. 그러나 FreeBSD 7.0부터 더이상 procfs 파일시스템에 의존하지 않기 때문에 mount_procfs 명령을 사용할 필요없이 시스템 콜을 추적할 수 있다.
# mount_procfs /dev/procfs /proc
사용예) truss ls
-f 옵션을 사용하면 fock되는 프로세스까지 추적할 수 있다.
6. 부트로더의 변경으로 USB에서 부팅할 수 있고, GPT 레벨 디스크에서 부팅할 수 있다.
* 2008/04/18 - [IT이야기] - FreeBSD 7 관련 도서 2권
* 2008/03/11 - FreeBSD 7.0과 Linux 간의 성능 비교
* 2008/03/07 - [시스템이야기] - FreeBSD 7.0 사용기
* 2008/02/28 - [시스템이야기] - FreeBSD 7.0 릴리즈
'시스템이야기' 카테고리의 다른 글
MySQL 성능 튜닝을 쉽게 하자 (4) | 2009.06.08 |
---|---|
FreeBSD 7에서 ZFS 사용 (유연성은 좋으나, 성능은 불만족) (4) | 2009.02.26 |
스팸툴이 깜빡한건가? 스팸 툴에서 사용하는 변수들 (6) | 2008.12.21 |
MySQL 인젝션 공격 방어하는 GreenSQL (4) | 2008.12.11 |
MySQL 5.1 한글 매뉴얼 (4) | 2008.11.27 |