'사용기'에 해당되는 글 2건

  1. 2009.01.19 FreeBSD 7.1 달라진 것 몇가지 2
  2. 2008.03.07 FreeBSD 7.0 사용기 2
시스템이야기2009. 1. 19. 19:23

FreeBSD 7.1의 큰 변화는 첫째 기본 스케쥴러의 변경, 두번째 '트레이싱, 디버깅 그리고 모니터링의 강화'라고 할 수 있을 정도로 이부분의 발전이 돋보인다. 달라진 것을 간단히 적어본다.

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

   그리고, 모든 소스는 CTF 옵션을 포함된 상태로 리빌드되어야 한다.

 # cd /usr/src
 # 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

   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

  [ 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

   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

   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 릴리즈

Posted by 좋은진호
시스템이야기2008. 3. 7. 22:57
FreeBSD 7.0의 사용기 몇가지를 적어보겠다.

1. make buildworld 시간 : 1시간 2분 (FreeBSD 6.x대와 별반 차이 없음)

2. 차세대 전송 프로토콜인 SCTP를 사용하기 위해서는 커널에서 INET, INET6 모두 define되어 있어야 한다. INET6을 define하지 않고 커널 컴파일을 하면 에러가 발생한다. ( /usr/src/sys/conf/NOTES )

    Note YOU MUST have both INET and INET6 defined.
    you don't have to enable V6, but SCTP is
    dual stacked and so far we have not teased apart
    the V6 and V4.. since an association can span
    both a V6 and V4 address at the SAME time :-)
'INET, INET6가 모두 정의되어 있어야 한다. V6를 enable할 필요는 없다. 그러나 SCTP가 dual stack으로 되어 있어서 지금까지 우리는 V6과 V4를 별도로 분리하지(teased apart) 않았다. (dual-stacked라 분리할 필요가 없었다는 의미) 왜냐하면 SCTP 커넥션(association)은 V6과 V4주소가 동시에 펼쳐지기(span) 때문이다.'
SCTP 에서는 커넥션을 association라고 부르므로, 위의 문장중 'association'은 커넥션으로 이해하면 된다.

3.  TCP 디버깅 로그가 이전 보다 자세하다.

1) 6.x 버전
kernel: Connection attempt to TCP ???.???.???.???:??? from ???.???.???.???:??? flags:0x12
2) 7 버전
kernel: TCP: [???.???.???.???]:80 to [???.???.???.???]:64938 tcpflags 0x12<SYN,ACK>; tcp_input: Connection attempt to closed port
    그리고, Connection attempt 외에 또다른 로그.
kernel: TCP: [???.???.???.???]:21 to [???.???.???.???]:40255 tcpflags 0x18<PUSH,ACK>; tcp_do_segment: FIN_WAIT_2: Received 10 bytes of data after socket was closed, sending RST and removing tcpcb

4. ZFS 파일시스템

/boot/loader.conf 에 다음과 같이 설정하고 리부팅하면, XFS와 ZFS 파일시스템을 사용할 수 있다.
xfs_load="YES"                   # XFS
zfs_load="YES"                   # ZFS

kldstat로 동적링크된 커널모듈(.ko) 목록을 확인해보자.
# kldstat
Id Refs Address    Size     Name
 1    5 0xc0400000 8fb638   kernel
 2    1 0xc0cfc000 81404    xfs.ko
 3    1 0xc0d7e000 b8344    zfs.ko
 4    1 0xc0e37000 6a22c    acpi.ko
#
# kldstat -v
... 생략 ...
 2    1 0xc0cfc000 81404    xfs.ko
        Contains modules:
                Id Name
                 1 xfs
 3    1 0xc0d7e000 b8344    zfs.ko
        Contains modules:
                Id Name
                 2 zfsctrl
                 3 zfs
                 4 zfs_zvol
                 5 zfs_vdev
... 생략 ...

ZFS 사용을 위한 준비는 완료됐다. zfs, zpool 등의 명령으로 ZFS 파일시스템을 만들고 확인해본다.
# zpool create data /dev/da0s1h
# mount
... 생략 ...
data on /data (zfs, local)
# zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
data   105K  17.1G    18K  /data

ZFS와 UFS간의 성능테스트와 그 이외의 응용프로그램 등의 성능은 추후 테스트를 해볼 것이다.
덧붙여서 FreeBSD 7 리뷰글과 Live CD로 설치하는 화면을 'Review of FreeBSD 7'에서 볼 수 있다.

※ 시스템 환경 : Dell 1950, CPU 5310 X 2개, 2G 메모리, SAS, No RAID
Posted by 좋은진호